如何在docker compose中重置mariadb密码



我忘记了在docker compose环境中运行mariadb的密码。当然,重置密码可以通过将其执行到容器中并输入:来实现

mysqld_safe --skip-grant-tables &

并用更改密码

FLUSH PRIVILEGES;
SET PASSWORD FOR 'your_user'=PASSWORD('YOUR_PASSWORD');

然而,为了让mysqld_safe正常工作,必须停止mariadb服务。不知怎么的,我无法停止我在集装箱里的mariadb服务。

root@d266a0667297:/# service mariadb stop
* Stopping MariaDB database server mariadbd                             [fail]

如何在docker容器中停止mariadb,然后使用mysqld_safe重置密码?

以下解决方案对我有效:

  1. 用docker启动我的mariadb容器compose并用bash这样重写mariadb dockerfile的CMD:

    sudodocker编写运行数据库bashservice——status all现在应该显示mariadb没有运行。

然后更改密码:

mysqld_safe --skip-grant-tables &
FLUSH PRIVILEGES;
SET PASSWORD FOR 'wikiuser'=PASSWORD('XRtmkhdMXriIu2VvZ8T');

FLUSH PRIVILEGES用于告诉服务器重新加载授权表,以便帐户管理语句按此处所述工作(https://dev.mysql.com/doc/refman/5.6/en/resetting-permissions.html)

您可以通过以下命令传递配置文件:

[mariadb]
init-file=/vol/reset.sql

ref:init文件

到您的容器,并在该文件中包含SET PASSWORD ...。不需要CCD_ 2。

最新更新