返回顶部
首页 > 资讯 > 数据库 >mysqld: Can‘t read dir of ‘/etc/mysql/conf.d/‘ (Errcode: 2 - No such file or directory
  • 464
分享到

mysqld: Can‘t read dir of ‘/etc/mysql/conf.d/‘ (Errcode: 2 - No such file or directory

mysqldocker数据库 2023-09-03 18:09:43 464人浏览 安东尼
摘要

记录一个Docker 安装Mysql的小问题,查了一下网上说的,说的是权限的问题,但是我仔细一瞧发现并不是,权限问题的话应该是这样的 mysqld:Can’t read dir of ‘/etc/my

记录一个Docker 安装Mysql的小问题,查了一下网上说的,说的是权限的问题,但是我仔细一瞧发现并不是,权限问题的话应该是这样的
mysqld:Can’t read dir of ‘/etc/mysql/conf.d’
(Errcode:13 -Permission denied) mysqld:[ERROR]Fat

容器的运行命令加上
–privileged=true即可,
但是我试着没有效果,很明显我这个并不是权限的问题,后来想到有可能是挂载目录出现的问题。结果还真是。用如下的方法就能解决。
首先拉取镜像

docker pull mysql:5.7

然后安装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

但是通过命令docker ps查看没有这个容器

docker ps

查看运行日志docker logs 容器id
查看容器id(以下命令可以查看全部容器,包括启动失败的)

docker ps -a

在这里插入图片描述
查看容器的启动日志

docker logs 33e03e9baa15

报错如下:
在这里插入图片描述
就是不存在/etc/mysql/conf.d这个目录

原因:
我们在书写创建容器的命令出了问题
在这里插入图片描述
我们这个挂载目录出了问题,我的理解是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,因此需要修改。
mysql官网地址
在这里插入图片描述

解决方法:先随意创建一个mysql容器

docker run -d -e MYSQL_ROOT_PASSWORD=root mysql:5.7

查看运行的容器

docker ps

在这里插入图片描述
将mysql容器中的/etc/mysql中的mysql目录下的文件复制到宿主机/mydata/mysql/conf目录下
命令格式:docker cp 容器id:容器内目录 宿主机目录

docker cp 4b1a0fe53315:/etc/mysql/ /mydata/mysql/conf

这样的话/mydata/mysql/conf下就有conf.d和mysql.conf.d两个空文件夹了,查看 官网说明,/etc/my.cnf里面有以下两行,大意就是my.cnf这个配置文件又包含了/etc/mysql/conf.d/和/etc/mysql/mysql.conf.d/目录下的配置文件,所以我们可以把cnf后缀结尾的配置文件放进下面 两个文件夹中,达到修改默认配置的作用。

!includedir /etc/mysql/conf.d/     !includedir /etc/mysql/mysql.conf.d/

然后把这个容器删掉

docker rm -f 4b1a0fe53315

创建一个mysql:5.7.9的容器,复制/etc/mysql/my.cnf

docker run -d -e MYSQL_ROOT_PASSWORD=root mysql:5.7.9
docker cp 4b1a0fe53315:/etc/mysql/my.cnf /mydata/mysql/conf/mysql.conf.d

然后把这个容器删掉

重新创建一个容器

docker run -p 3306:3307 --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

查看容器是否成功运行,如下图可以看到容器正常运行了,说明已经成功了。

docker ps

在这里插入图片描述

来源地址:https://blog.csdn.net/qq_45564783/article/details/126440171

您可能感兴趣的文档:

--结束END--

本文标题: mysqld: Can‘t read dir of ‘/etc/mysql/conf.d/‘ (Errcode: 2 - No such file or directory

本文链接: https://lsjlt.com/news/392605.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作