Can‘t read dir of ‘/etc/mysql/conf.d/‘ (OS errno 2 - No such file or directory)解决方法

遇到问题不要慌,我们先通过docker ps -a 查看没有启动起来的容器的id,然后查看这个容器的报错日志,
查找容器的报错日志位置

docker inspect --format '{{.LogPath}}'  容器id

通过cat命令查看报错日志内容

完整过程如下。
在这里插入图片描述

细谈报错信息

{"log":"\u0009mysqld: Can't read dir of '/etc/mysql/conf.d/' (OS errno 2 - No such file or directory)\n","stream":"stderr","time":"2023-10-08T07:52:41.976865657Z"}
{"log":"mysqld: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 36.\n","stream":"stderr","time":"2023-10-08T07:52:41.976868507Z"}
{"log":"mysqld: [ERROR] Fatal error in defaults handling. Program aborted!\n","stream":"stderr","time":"2023-10-08T07:52:41.976871357Z"}

问题原因:

可见是我们这个挂载目录出了问题,我的理解是mysql容器的/etc/mysql目录挂载到宿主机的 /mydata/mysql/conf目录,由于宿主机的 /mydata/mysql/conf是空的,所以找不到/etc/mysql/conf.d中conf.d这个目录,导致容器创建失败。我这么做的目的是将配置文件挂载到宿主机,但是 我查看mysql官网发现这个挂载方式已经不适用了,配置文件已经不再/etc/mysql里了,里面只有两个空目录,分别是conf.d和mysql.conf.d,这两个目录里面什么都没有。真正的配置文件是/etc/my.cnf,因此需要修改。

解决问题

没有的话那就创建喽

sudo mkdir -p /etc/mysql/conf.d


创建完成,就可以启动容器了。注意,在启动之前要把之前启动失败的容器删掉,docker rm 容器名称

sudo docker run --privileged=true \
 -p 13306:3306 --name mysql \
 -v /mydata/mysql/log:/var/log/mysql \
 -v /mydata/mysql/data:/var/lib/mysql \
 -v /mydata/mysql/conf:/etc/mysql/conf.d \
 -e MYSQL_ROOT_PASSWORD=root \
 -d mysql:8.0.34

再进行一次docker ps,发现容器启动成功,挂载也成功。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值