Docker mysql ERROR 1396(HY000):'root'@'%'的操作CREATE USER失败

lmi*_*asf 8 mysql docker

我正在尝试设置两个运行Python的容器,另一个运行mysql.这是我的docker-compose.yml档案:

version: '3'
services:
    python:
        restart: always
        build: ./budget/dockerfiles/python/
        ports:
            - "5000:5000"
        links:
            - db
        depends_on:
            - db
        volumes:
            - ./budget/:/app:z
        entrypoint:
            - python
            - -u
            - /app/run.py

    db:
        build: ./budget/dockerfiles/mysql/
        environment:
            MYSQL_ROOT_PASSWORD: password
            MYSQL_DATABASE: database-name
            MYSQL_USER: root
            MYSQL_PASSWORD: password
        volumes:
            - ./Dump.sql:/db/Dump.sql:z
            - ./Dump_Test.sql:/db/Dump_Test.sql:z
            - ./big_fc.sql:/db/big_fc.sql:z
        ports:
            - "3306:3306"
Run Code Online (Sandbox Code Playgroud)

但是,当我运行时docker-compose up -d --build,容器已构建,但mysql容器崩溃.在日志中,它说:

ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'%' 
Run Code Online (Sandbox Code Playgroud)

我想试试这篇帖子的建议,但我甚至无法进入容器,因为它已经崩溃了.有人能告诉我我能做什么吗?

lmi*_*asf 17

根据这个github问题,问题是设置MYSQL_USERroot.它将无法创建第二个用户,'root'@'%'因为它已经存在于users表中.

因此,这可以仅通过设置来解决MYSQL_ROOT_PASSWORD,MYSQL_DATABASE以及MYSQL_PASSWORDdocker-compose.yml文件中.

  • 或者只是将 MYSQL_USER 更改为任何不同的内容,即 MYSQL_USER=shoot ,以防需要不同的用户 (5认同)
  • 天哪,这太简单了;为什么这花了我这么多时间??? (3认同)