分享下docker部署mysql8.0踩坑经历
在一次项目中想用docker部署mysql8.0出现了这种问题
数据库是有这个表的,但是项目使用的时候,就出现了这样的问题,因为编码中大写,导致请求到mysql找不到!
这是docker部署mysql的一个坑,
这里给大家提供一个标准的docker部署mysql8.0的正确流程。解决了大小写敏感问题
还踩坑你打我
#opt目录是Linux提供我们扩展的目录,可以存放用户需求的文件 mkdir -p /opt/datas/docker/mysql/conf mkdir -p /opt/datas/docker/mysql/data
配置文件
vim /opt/datas/docker/mysql/conf/my.cnf 放下面这些
代码语言:javascript复制[client]
#socket = /usr/mysql/mysqld.sock
default-character-set = utf8mb4
[mysqld]
#pid-file = /var/run/mysqld/mysqld.pid
#socket = /var/run/mysqld/mysqld.sock
#datadir = /var/lib/mysql
#socket = /usr/mysql/mysqld.sock
#pid-file = /usr/mysql/mysqld.pid
lower_case_table_names=1
datadir = /opt/datas/docker/mysql/data
character_set_server = utf8mb4
collation_server = utf8mb4_bin
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
!includedir /etc/mysql/conf.d/
run容器
代码语言:javascript复制docker run
--name lhc_mysql
--restart=unless-stopped
-it -p 3306:3306
-v /opt/datas/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf
-v /opt/datas/docker/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=<your password>
-e lower_case_table_names=1
-d mysql:8.0
这两处是解决大小写敏感问题的地方
进入容器
docker exec -it 容器id /bin/bash;
mysql -uroot -p;
这里开放连接权限 use mysql ALTER USER ‘root‘@’%’ IDENTIFIED WITH mysql_native_password BY ‘新密码’; flush privileges;
这里开放权限,让程序能连上,mysql8.0以后需要这样做,这就是标准的配置mysql8.0的过程。