Docker-compose mysql环境PASSWORD和ROOT_PASSWORD的区别

hel*_*123 11 php mysqli docker docker-compose

这是我的 docker 撰写的:

 db:
        image: mysql
        ports: 
            - "3306:3306"
        environment:
            MYSQL_DATABASE: myDb
            MYSQL_USER: user
            MYSQL_PASSWORD: test
            MYSQL_ROOT_PASSWORD: test 
        volumes:
            - ./dump:/docker-entrypoint-initdb.d
            - persistent:/var/lib/mysql
Run Code Online (Sandbox Code Playgroud)

当我将用户和密码更改为“root”时,我的数据库被创建,但它是空的。当我保留上述凭据时,/dump 目录中的 .sql 脚本将按预期填充数据库。凭据更改如何影响数据注入?如何解决此问题?

Nig*_*Ren 13

从文档(https://hub.docker.com/_/mysql/)...

MYSQL_用户、MYSQL_密码

这些变量是可选的,结合使用来创建新用户并设置该用户的密码。该用户将被授予对 MYSQL_DATABASE 变量指定的数据库的超级用户权限(见上文)。创建用户需要这两个变量。

所以这是创建一个带有密码的新用户。MYSQL_ROOT_PASSWORD是MySQL root用户的密码。

MYSQL_ROOT_PASSWORD 此变量是必需的,指定将为 MySQL root 超级用户帐户设置的密码。在上面的示例中,它被设置为 my-secret-pw。