MySQL 5.6容器使用自定义配置文件的权限问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 5.6容器使用自定义配置文件的权限问题相关的知识,希望对你有一定的参考价值。


提出问题:

???????? 在使用Rancher2.0.2部署一个mysql deployment时,我们会发现,如果只设置/var/lib/mysql数据目录时,mysql容器(pod)能够正常启动,一旦数据目录和配置目录同时挂载时,mysql容器(pod)就无法启动。


解决思路:

???????? 我们运行一个MySQL 5.6的容器,观察正常运行时,容器内数据目录、配置目录、日志目录的所有者及权限,并查看容器内组文件,对比宿主机中的组文件,应该能找到原因所在,进而可以通过在宿主机中设置正确的目录权限和所有者来解决该问题。


Docker宿主机中:

组文件:??? /etc/group

root:x:0:

adm:x:4:syslog,catty

docker:x:999:catty

catty:x:1000


MySQL容器中:

功能???????????????? 目录?????????????????????????????????????? chown -R??????? chmod

日志目录:? /var/log/mysql????????????????????? mysql:adm??????? 640

数据目录:? /var/lib/mysql?????????????????????? mysql:mysql????? 640

配置文件:? /etc/mysql/mysql.conf.d??? root:root???????????? 644

组文件:????? /etc/group

root:x:0:

adm:x:4:

mysql:x:999:


图1、MySQL5.6容器中目录权限及所有者

技术分享图片

解决办法:

???????? 如果运行mysql容器时,需要使用自定义配置文件,可在主机上创建目录,设置所有者为root用户和root组,命令: chown -R root:root /etc/mysql/ ,然后运行容器时,使用-v /etc/mysql:/etc/mysql 将该目录挂载到容器中,这样才能正常启动MySQL容器。


参考链接

Set permissions on log folder #349

https://github.com/docker-library/mysql/pull/349

5.7.10-fails to mount volume `/var/log/mysql` #146

https://github.com/docker-library/mysql/issues/146#ref-commit-68a2cd4

以上是关于MySQL 5.6容器使用自定义配置文件的权限问题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用从自定义 MySQL Docker 映像创建容器的 GenericContainer 配置 spring 数据源

Spring Boot使用嵌入式容器,自定义Filter如何配置?

如何在 Elastic Beanstalk 上为特定容器设置文件夹权限

Spring Boot使用嵌入式容器,那怎么配置自定义Filter呢

Spring-Boot使用嵌入式容器,那怎么配置自定义Filter呢

Mysql 5.6主从同步配置