docker安装msyql5.7报错:mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)
安装mysql5.7时报错
#docker拉取镜像命令 docker pull mysql:5.7 #docker安装MySQL命令 docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 #查看启动的进程:发现mysql没有启动 docker ps #查看启动日志: docker logs -f mysql
报错信息
2023-10-30 15:41:05+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.44-1.el7 started.
2023-10-30 15:41:05+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.TpkwCVCFhW
mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
报错原因:
mysql5.7的my.cnf不在/etc/mysql下,而是在 /etc/my.cnf 下,所以会找不到
解决:
直接指定配置映射,使用下面启动方式,启动成功
这里需要注意的是,因为是影射文件,所以需要宿主机上的文件存在才可以,需要先准备好一个my.cnf文件,下面也有具体方法
#宿主机新建目录 mkdir -p /mydata/mysql/conf/ #启动一个临时的mysql容器 docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 #进入容器内部查看配置文件具体位置 docker exec -it mysql bash #影射文件,必须是宿主机中存在的文件才能影射,否则会提示找不到,所以需要先将my.cn从容器拷贝到宿主机中 #拷贝my.cnf文件到宿主机 docker cp mysql:/etc/my.cnf /mydata/mysql/conf/ #删除临时容器 docker rm -f mysql #新建容器,影射配置文件,数据目录到宿主机,root密码是root,如果设置为123456会不生效 docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7