为什么mysql数据所有权在运行docker容器后更改为systemd journal remote

为什么mysql数据所有权在运行docker容器后更改为systemd journal remote,mysql,docker,docker-compose,mariadb,archlinux,Mysql,Docker,Docker Compose,Mariadb,Archlinux,我将mysql数据库存储在/home/mysql中,而不是/var/lib/mysql。该目录以前归mysql所有。但是,当我使用此yml文件运行命令docker compose up时: version: '3' services: mariadb: image: mariadb restart: always volumes: - /home/mysql:/var/lib/mysql elasticsearch: image: docker.

我将mysql数据库存储在
/home/mysql
中,而不是
/var/lib/mysql
。该目录以前归mysql所有。但是,当我使用此yml文件运行命令
docker compose up
时:

version: '3'
services:
  mariadb:
    image: mariadb
    restart: always
    volumes:
     - /home/mysql:/var/lib/mysql
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.6.4
    environment:
      - "ES_JAVA_OPTS=-Xms750m -Xmx750m"
      - bootstrap.memory_lock=false
  site:
    build: .
    volumes:
      - "./app:/app"
    links:
      - mariadb:mysql
    environment:
      - DOCKER_IP=172.19.0.2
    depends_on: ['elasticsearch','mariadb']
    ports:
      - "3000:3000"
docker容器可以运行,但是
/home/mysql
中的整个文件夹和文件属于
systemd journal remote
,这导致
节点
服务器无法连接到
mariadb
。我必须停止docker实例,恢复mysql文件夹所有权并删除
ib_logfile0
ib_logfile1

为什么装载
/home/mysql
会导致如此致命的问题

更新:

我的解决方案是添加
用户:“mysql”


您的用户
systemd journal remote
uid
很可能与容器中用户
mysqld
uid
相同。用
ls-n
检查。为了避免混淆,可以使用common
uid
s,或者使用
chmod o+rwx

作为
root:root
测试,您应该使用
--user
参数启动Docker容器。如果您这样做,并将相同的
uid:gid
设置为MySQL存储的所有者,您将不会遇到权限问题。您必须检查如何在Docker Compose中准确执行此操作,因为我向您展示了正常命令行执行的示例

my
systemd journal remote
uid为999,很可能是这样,但仍在尝试了解如何更改容器mariadb uid谢谢。添加
用户:“89”
修复了所有权问题。但每次我停止使用容器并通过
systemctl start mariadb
启动mariadb后,它都不会启动,除非我删除
ib_logfile0
ib_logfile1
Hmm,您是否检查了这些文件的权限?他们是否将普通用户/组作为所有者或根用户?运行容器后,请注意这两个日志文件位于
root
组下。之前它在mysql小组中。还有一个问题,你是否使用Docker Hub/Store中MariaDB的官方图像?Docker compose将为我下载官方图像。我已经解决了这个问题。如果我在yml文件中使用
user:“mysql”
而不是
user:“89”
,那么这两个日志文件不会改变所有权
version: '3'
services:
  mariadb:
    image: mariadb
    restart: always
    volumes:
     - /home/mysql:/var/lib/mysql
    user: "mysql"
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.6.4
    environment:
      - "ES_JAVA_OPTS=-Xms750m -Xmx750m"
      - bootstrap.memory_lock=false
  site:
    build: .
    volumes:
      - "./app:/app"
    links:
      - mariadb:mysql
    environment:
      - DOCKER_IP=172.19.0.2
    depends_on: ['elasticsearch','mariadb']
    ports:
      - "3000:3000"