首页 > 解决方案 > 如何在 docker compose 中重置 mariadb 密码

问题描述

我忘记了在 docker-compose 环境中运行的 mariadb 的密码。当然重置密码可以通过 exec -it 进入容器并输入:

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 重置密码?

标签: mysqldockerdocker-composemariadb

解决方案


以下解决方案对我有用:

  1. 使用 docker-compose 启动我的 mariadb 容器,并使用 bash 覆盖 mariadb dockerfile 的 CMD,如下所示:

    sudo docker-compose run database bash service --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


推荐阅读