Mysql docker 容器不断重启

Shi*_*uan 9 mysql docker dockerfile docker-compose docker-volume

容器不断重启。我试过

  • docker-compose down -v
  • 泊坞窗音量 rm

容器工作正常,直到我的电脑意外关闭。

日志

2021-03-27 13:16:08+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.23-1debian10 started.

2021-03-27 13:16:08+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'

2021-03-27 13:16:08+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.23-1debian10 started.

2021-03-27 13:16:08+00:00 [ERROR] [Entrypoint]: MYSQL_USER="root", MYSQL_USER and MYSQL_PASSWORD are for configuring a regular user and cannot be used for the root user

Remove MYSQL_USER="root" and use one of the following to control the root user password:

- MYSQL_ROOT_PASSWORD

- MYSQL_ALLOW_EMPTY_PASSWORD

- MYSQL_RANDOM_ROOT_PASSWORD
Run Code Online (Sandbox Code Playgroud)

Docker-compose.yml

 mysql:
    image: mysql:8.0
    ports:
      - 3306:3306
    expose:
      - "3306"
    cap_add:
      - SYS_NICE # CAP_SYS_NICE
    volumes:
      - ./cache/mysql:/var/lib/mysql
      - ./conf-mysql.cnf:/etc/mysql/conf.d/mysql.cnf
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_PASSWORD=root
      - MYSQL_USER=root
      - MYSQL_DATABASE=mydb
    restart: unless-stopped
Run Code Online (Sandbox Code Playgroud)

Mar*_*tin 29

只需删除MYSQL_USER,它就会正常工作,因为root用户是自动创建的。

附注。这似乎是较新的 docker 版本的问题,因为它以前可以工作并且不会引发错误。


小智 11

我遇到了完全相同的问题,这就是我解决它的方法。

转到 docker-compose.yml 文件并进行以下更改:

  • 将“MYSQL_USER:root”改为“MYSQL_ROOT_USER:root”然后删除前一个。

  • 将“MYSQL_PASSWORD: YourPasseord”更改为“MYSQL_ROOT_PASSWORD: YourPasseord”,然后删除前一项。

    示例:这是我的配置...

数据库服务器:

image: mysql:8.0
       container_name: mysql
       restart: always
       environment:
         MYSQL_DATABASE: DB_epraca
         MYSQL_ROOT_USER: root
         MYSQL_ROOT_PASSWORD: Password
         MYSQL_ROOT_HOST: localhost
Run Code Online (Sandbox Code Playgroud)


小智 5

用户root是保留的,并且在 mysql 启动时已经使用它创建。

MYSQL_USER必须是不同的名称,而不是root.


arg*_*rgo 5

官方 mysql docker 最近发生了导致此问题的更改。有关更多详细信息,您可以查看github 上的此 PR

为了快速解决方案,您应该删除MYSQL_USER=root并且您的docker-compose.yaml文件应如下所示

mysql:
    image: mysql:8.0
    ports:
      - 3306:3306
    expose:
      - "3306"
    cap_add:
      - SYS_NICE # CAP_SYS_NICE
    volumes:
      - ./cache/mysql:/var/lib/mysql
      - ./conf-mysql.cnf:/etc/mysql/conf.d/mysql.cnf
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=mydb
    restart: unless-stopped
Run Code Online (Sandbox Code Playgroud)