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

 

 

posted on 2023-10-31 17:45  欢跳的心  阅读(2064)  评论(0编辑  收藏  举报