Docker-compose:mysqld:无法创建/写入文件“/var/lib/mysql/is_writable”(错误代码:13 - 权限被拒绝)

Alb*_*eis 12 mysql docker docker-compose

使用 docker compose 启动数据库服务时遇到问题:

 version: '3'
 services:

 # Mysql DB
    db:
        image: percona:5.7
        #build: ./docker/mysql
        volumes:
          - "./db/data:/var/lib/mysql"
          - "./db/init:/docker-entrypoint-initdb.d"
          - "./db/backups:/tmp/backups"
          - "./shared/home:/home"   
          - "./shared/root:/home"  
        restart: unless-stopped
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: db_name
            MYSQL_USER: user
            MYSQL_PASSWORD: pass
       ports:
       - "3307:3306"
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一切,但没有运气:

"./db/data:/var/lib/mysql:rw"

创建一个 dockerfile 并从构建而不是图像创建:

FROM percona:5.7

RUN adduser mysql
RUN sudo chown mysql /var/lib/mysql
RUN sudo chgrp mysql /var/lib/mysql
Run Code Online (Sandbox Code Playgroud)

我还尝试在 db 服务上添加一个用户:

user: "1000:50"
Run Code Online (Sandbox Code Playgroud)

但其中任何一个都可以解决这个问题..我错过了什么?

MySQL 5.7 安装错误`mysqld: Can't create/write to file '/var/lib/mysql/is_writable'`

Alb*_*eis 8

我不得不将 ./db/data user:group 更改为 999:999,因此 docker user 是进行更改的人。

sudo chown 999:999 ./db/data
Run Code Online (Sandbox Code Playgroud)

  • 遇到同样的问题。该解决方案解决了问题,但似乎不是实现该目标的最佳方法。在我的主机上,uid 999 由 systemd-coredump 用户和容器内的 mysql 用户使用。就我的实际观点而言,它适用于该用户,带有 mysql 映像,但如果您有额外的服务,它很快就会不合适。必须以更好的方式管理权利。如果有人有信息要补充,请随意。 (4认同)