Docker安装mysql,并自定义my.cnf

Docker大法好
在配置过程中出现了配置文件无效的情况,记录下原因和解决方法

1. 拉取镜像

`docker pull mysql:5.7`

2. 配置目录

`mkdir -p /data/mysql/conf.d`
`mkdir -p /data/mysql/data`

将自定义的my.cnf上传到/data/mysql/conf.d,新建目录/data/mysql/data存放数据


**下面一句命令尤其关键,因为mysql启动时会按目录优先级寻找配置文件,但只找符合安全要求的文件,如果文件权限配置不正确,启动时会报如下错误:

Warning: World-writable config file '/etc/my.cnf' is ignored

意思是文件权限全局可写,任何一个用户都可以写。mysql担心这种文件被其他用户恶意修改,所以忽略掉这个配置文件。**
chmod 744 /data/mysql/conf.d/my.cnf


3. 运行

`docker run --name mysql -v /data/mysql/data:/var/lib/mysql -v /etc/localtime:/etc/localtime:ro -v /data/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD='mysql123' -e MYSQL_DATABASE=db1 -e MYSQL_USER=db_user -e MYSQL_PASSWORD=mysql123 -p 3306:3306 -d mysql:5.7`
Dockermysqlmy.cnf