docker部署mysql并修改配置

时间:2025-02-13 21:32:51

1、查看docker仓库中的mysql命令

docker search mysql

2、为选定的需要pull到本地系统中的镜像(本文已mysql5.7为例)

docker pull mysql:5.7

3、启动mysql,并将mysql文件映射到宿主机:

docker run -p 33060:3306 --restart=always --name mysql -v /mdata/mysql/conf:/etc/mysql/ -v /mdata/mysql/logs:/var/log/mysql -v /mdata/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --lower_case_table_names=1

这里解释一下,/mdata为宿主机路径,根据自身实际情况调整

–lower_case_table_names=1为设置mysql不区分大小写

4、更改mysql容器内的时间问题(如果mysql容器内时间与实际时间一致可忽略本步骤)

docker cp /usr/share/zoneinfo/Asia/Shanghai  mysql:/etc/localtime

拷贝完重启mysql容器

docker restart mysql

5、进入mysql,进入docker容器,修改mysql 访问授权

docker exec -it  mysql bash
mysql -u root -p123456

mysql5.7版本修改访问授权:

grant all privileges on *.* to root@"%" identified by "123456" with grant option;

mysql8版本修改访问授权

alter user 'root'@'%' identified with mysql_native_password by '123456';

完成上面修改之后输入

flush privileges;

修改完成之后输入exit指令退出mysql访问界面和容器

6、修改mysql的group by配置
mysql5.7版本默认拥有sql_mode=only_full_group_by,所以需要进行调整

docker exec -it  mysql bash
vim /etc/mysql/

在文件的最后加上下面的内容

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

如果系统提示找不到vim或vi指令,则进行下面的操作之后再修改

apt-get update
apt-get install vim -y