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命令查看报错日志内容

完整过程如下。
Can‘t read dir of ‘/etc/mysql/conf.d/‘ (OS errno 2 - No such file or directory)解决方法_第1张图片

细谈报错信息

{"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,发现容器启动成功,挂载也成功。

你可能感兴趣的:(报错,mysql,数据库)