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

原文地址:http://blog.51cto.com/10321203/2133436

时间: 2024-10-29 20:02:02

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

详解使用DockerHub官方的mysql镜像生成容器

收藏 yope 发表于 10个月前 阅读 1506 收藏 32 点赞 1 评论 0 腾讯云·云上实验室:开发者零门槛,免费使用真机在线实验!>>>   摘要: 详解使用DockerHub官方的mysql镜像生成容器 一.下载官方的mysql镜像: 二.生成容器 : 三.进入到新生成的容器: 四.修改容器中mysql的配置文件 . 写在前面:看到网上关于利用DockerHub官方的mysql镜像生成容器此类的文档比较少,故结合自身实践分享给大家,还望多多指教. 我的需求:利用docker

MySQL二进制包安装并自定义basedir

前言: MySQL二进制包,定死了basedir为/usr/local/mysql/,但是很多人喜欢自定义目录,比如我就喜欢放/opt/app/mysql 数据目录喜欢自定义为/data/mydata/,以前必须把basedir必须做个软链接到/usr/local/mysql,本人有轻微的强迫症,就不想这么做,下面就来看实现过程. 1创建组,创建用户 groupadd -g3306 mysql useradd -u3306 -M -s /sbin/nologin mysql 2.解压二进制包,创

自定义配置文件的使用

经常在使用APP.CONFIG 或WEB.CONFIG 时,发现系统中的配置无法满足自己的需求.这时就需要自定义的配置文件处理: 现需要在配置文件中定义可增加删除任务的功能.可根据需要增加一个或删除任务. 定义配置节点 /// <summary> /// MRP自定义配置类 /// </summary> public class MRPSection : ConfigurationSection { /// <summary> /// Gets the tasks. /

lumen 下使用自定义配置文件

由于lumen与laravel有一定的区别,在lumen根目录下没有config文件,因此在lumen下使用自定义配置文件的时候有区别,如下步骤 1,在根目录下新建config文件夹 2,在config文件夹中存放自定义的配置文件 eg:areas.php  存放区域的相关信息 3,在bootstrap中的app文件中,进行此自定义配置文件的注册 $app->configure('salers'); 4,在需要使用配置文件的控制器中先引入config类 use Illuminate\Suppor

thinkphp3.2自定义配置文件

扩展配置可以支持自动加载额外的自定义配置文件,并且配置格式和项目配置一样. 设置扩展配置的方式如下(多个文件用逗号分隔): // 加载扩展配置文件 'LOAD_EXT_CONFIG' => 'user,db', 假设扩展配置文件user.php 和db.php分别用于用户配置和数据库配置,这样做的好处是哪怕以后关闭调试模式,你修改db配置文件后依然会自动生效. 如果在应用公共设置文件中配置的话,那么会自动加载应用公共配置目录下面的配置文件Application/Common/Conf/user.

Springboot-读取核心配置文件及自定义配置文件

读取核心配置文件 核心配置文件是指在resources根目录下的application.properties或application.yml配置文件,读取这两个配置文件的方法有两种,都比较简单. 核心配置文件application.properties内容如下: server.port=9090 test.msg=Hello World Springboot! 使用@Value方式(常用) 1 @RestController 2 public class WebController { 3 4

Farseer.net轻量级开源框架 中级篇:自定义配置文件

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定 下一篇:Farseer.net轻量级开源框架 中级篇: 动态数据库访问 什么是自定义配置文件 目前系统提供了多个配置文件,一些开发过程中常用到的一些配置. 既然是配置,那么说明一些设置可能会根据项目的不同而有所不同.比如web.config其实就是个配置文件. 当我们定义好配置文件后,在项目运行的时调用了配置,都将在:~/App_Data/  文件夹中生成(如果不存在这

C# 自定义配置文件

配置文件有两种设置方式,第一种是直接在网站根目录下的web.config中设置:第二种方式是自定义配置文件,在web.config中指定其他配置文件的路径. 第一种:除了在常用的appSettings节点下进行<add/>添加,还可以在<configSections>节点下设置<section/>节点,具体如下: <configSections> <!--以NameValue键值/对的形式返回配置节中的信息--> <section name

CI获取自定义配置文件中的二维配置数组

CI获取自定义配置文件中的二维配置数组:如:在admin.php配置文件中有如下配置:$config['admin_menu'][] = array( 'name' => '商品管理', 'c' => 'goods', 'a' => 'lists', 'icon'=>' icon-gift', 'item' => array( //商品 0 => array('name' => '商品列表', 'c' => 'goods', 'a' => 'lists