随笔 - 120  文章 - 0  评论 - 22  阅读 - 56万

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   欢跳的心  阅读(2384)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示