如果我启动docker mariadb容器,则仅在一段时间后设置由MYSQL_ROOT_PASSWORD
传递的密码。 mariadb容器的版本是10.4。,泊坞窗版本是19.03.5 ..我的操作系统是Linux Mint 19.3。
为了进行测试,我卸载了所有here之类的docker组件。
我像here一样重新安装了docker,并像here一样进行了linux-postinstall。
之后,我启动了mariadb容器:
docker run --name mariadb \
-e MYSQL_ROOT_PASSWORD=myPass \
-d mariadb:10.4
此后,docker exec mariadb bash -c 'echo "$MYSQL_ROOT_PASSWORD"'
给出:myPass
。
我可以使用docker exec -it mariadb mysql
连接到运行容器中的mysql。
使用docker exec -it mariadb mysql -u root -pmyPass
的访问被拒绝。
等待约5分钟后,如果没有密码就无法登录。现在,密码已正确设置,我只能使用docker exec -it mariadb mysql -u root -pmyPass
登录。
我可以重现几次。如果您检查log,则可以看到11:28和11:34之间的间隔。我认为,在此条目之前:
2020-01-13 11:34:09 0 [Note] InnoDB: Buffer pool(s) load completed at 200113 11:34:09
,
无需输入密码即可访问。之后,需要密码。
如果我使用常规的MySQL容器而不是MariaDB,则设置密码将按预期工作。 我用以下命令启动docker mysql容器:
docker run --name myC \
-e MYSQL_ROOT_PASSWORD=myPass \
-d mysql:8.0.18
立即设置密码。因此,一旦容器运行,只能使用docker exec -it myC mysql -u root -pmyPass
进行访问,这是预期的行为。
我是通过docker run ...
从bash控制台直接启动容器的,我不使用docker-compose或其他自动化工具。
任何人都可以解释为什么会发生这种情况,或者有解决方案来避免这种时间间隔吗?
谢谢!