为什么mysql数据所有权在运行docker容器后更改为systemd journal remote
我将mysql数据库存储在为什么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.
/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
检查。为了避免混淆,可以使用commonuid
s,或者使用chmod o+rwx作为root:root
测试,您应该使用--user
参数启动Docker容器。如果您这样做,并将相同的uid:gid
设置为MySQL存储的所有者,您将不会遇到权限问题。您必须检查如何在Docker Compose中准确执行此操作,因为我向您展示了正常命令行执行的示例mysystemd 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"