打开PowerShell
首先创建mysql容器,这里我们指定使用mysql5.7的版本
docker run -d -p 3306:3306 --name mysql-docker -e MYSQL_ROOT_PASSWORD=root mysql:5.7
创建成功,查看一下运行状态
docker ps
可以看到我们的容器正在运行中,现在进入容器,查看一下配置文件
docker exec -it mysql-docker /bin/bash
cat /etc/mysql/my.cnf
可以看到这里包含了两个目录下的文件,查看一下,mysql.conf.d下,发现有我们需要更改的文件
cat /etc/mysql/mysql.conf.d/mysqld.cnf
可以看到这里并没有 sql_mode的配置,说明mysql使用了默认的配置,我们可以进入mysql查看一下,
mysql -u root -p
回车输入我们创建容器时设置的密码,也就是root,进入mysql 控制台,输入
show variables like '%sql_mode';
查看默认 sql_mode配置,可以看到默认的是
这个时候我们就可以去更改配置文件了,输入
exit 退出mysql控制台,
然后我们再查看一下这个配置文件
cat /etc/mysql/mysql.conf.d/mysqld.cnf
把输出的内容复制一下,我们在本地新建一个同名文件,把内容粘贴进去,然后在 [mysqld]下面添加 sql_mode = 你的配置,比如:
把这个文件保存一下,
然后切换到命令行,输入exit退出容器,
停止并删除docker-mysql容器,
docker stop mysql-docker docker rm mysql-docker
然后我们修改下docker run 语句,把我们本地的配置文件映射覆盖到容器内部,重新配置一下容器
docker run -d -p 3306:3306 -v D:/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v D:/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql-docker mysql:5.7
然后我们按照一开始的步骤,重新进入一下容器
docker exec -it mysql-docker /bin/bash
进入mysql
mysql -u root -p root
查看sql_mode是否被修改
show variables like '%sql_mode';
可以看到已经修改成功
大功告成,由于配置文件是由我们本地映射过去的,所以如果还需要改什么配置的话,直接更改我们本地的配置文件就好了
ps: 以上命令都是在powershell中完成的,cmd有可能不支持创建容器和进入容器的代码,docker 版本 18.03.1 for win