今天用docker去运行mysql的时候,一直existing
输入 docker logs 镜像ID的时候发现报了mysqld: Can‘t read dir of ‘/etc/mysql/conf.d/‘ (Errcode: 13 - Permission denied)
网上都是说docker权限问题,我就跟着输入了
原因:
因为Centos7安全Selinux禁止了部分安全权限,导致mysql和mariadb在进行挂载/var/lib/mysql的时候会提示上面的信息
解决方法
在docker run中加入 --privileged=true 给容器加上特定权限
实际上还是没办法解决问题,还是运行失败
真正的解决方法:
1、建立对应的目录:
sudo mkdir /etc/mysql/conf.d
2、运行mysql指定-v 挂载到这个目录下
sudo 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/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
如果还没解决可以像网上那样加入 --privileged=true 给容器加上特定权限
即:
sudo docker run --privileged=true \
-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/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
我这边是mysql5.7的,如果是8.0以上的版本应该输入
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/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.30