首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >mysql“音量”中的一些奇怪(或不)的东西

mysql“音量”中的一些奇怪(或不)的东西
EN

Stack Overflow用户
提问于 2018-11-05 08:58:17
回答 1查看 100关注 0票数 0

只需使用docker-Compose.yaml创建数据库服务:

代码语言:javascript
代码运行次数:0
运行
复制
# another db service for test

version: '3.5'

networks:
  dockernet:
    driver: bridge

services:
  db:
    image: mysql/mysql-server:5.5.62
    restart: on-failure
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - ./mysql_dir:/var/lib/mysql
    networks:
      - dockernet

接下来,在我的~中添加目录“mysql”:

代码语言:javascript
代码运行次数:0
运行
复制
docker:~/docker$ ls -l
total 8
-rw-r--r--    1 futur    futur          674 Nov  5 04:35 docker-compose.yaml
drwxr-sr-x    2 futur    futur         4096 Nov  5 04:37 mysql_dir

我把我的帐户添加到‘码头’组:

代码语言:javascript
代码运行次数:0
运行
复制
docker:~/docker$ grep docker /etc/group
docker:x:101:futur

在我的停靠-撰写之后,我看到我的目录的权限发生了奇怪的变化:

代码语言:javascript
代码运行次数:0
运行
复制
docker:~/docker$ ls -l
total 8
-rw-r--r--    1 futur    futur          298 Nov  5 05:10 docker-compose.yaml
drwxr-sr-x    5 27       video         4096 Nov  5 05:11 mysql_dir

为什么会变成“27”和“视频”?那是什么?这正常吗?

这种行为可以防止我复制和移动目录'mysql_dir‘(用户'futur')。

我应该只使用根用户的停靠器吗?有什么方法可以避免使用root用户吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-05 12:10:05

如果在您的主机上运行docker exec <your_container> stat /var/lib/mysql,检查容器中/var/lib/mysql文件夹的权限,那么您将看到它的uid是27 (用户mysql),gid是27 (组mysql):

代码语言:javascript
代码运行次数:0
运行
复制
  File: '/var/lib/mysql'
  Size: 4096            Blocks: 8          IO Block: 4096   directory
...
Access: (0750/drwxr-x---)  Uid: (   27/   mysql)   Gid: (   27/   mysql)
...

当您在主机和容器之间挂载卷时,Docker根据容器内部的内容更改已挂载目录的权限(此处为uid=27gid=27)。

您从主机上看到的是正常的:27是因为您的主机上没有任何uid=27用户,而video组是因为这个组在您的主机上有gid=27 (您可以通过运行getent group video来验证这一点)。

您可以更改容器中的mysql uid和gid,以匹配主机上的容器,但我强烈建议您不要这样做。例如,如果您想备份数据,而不是挂载本地目录,您宁愿使用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53151126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档