【问题标题】:How to reset mariadb password in docker compose如何在 docker compose 中重置 mariadb 密码
【发布时间】:2021-04-19 06:55:45
【问题描述】:

我忘记了在我的 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 重置密码?

【问题讨论】:

    标签: mysql docker docker-compose mariadb


    【解决方案1】:

    以下解决方案对我有用:

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

      sudo docker-compose 运行数据库 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)

    【讨论】:

      【解决方案2】:

      你可以传递一个配置文件:

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

      参考:init-file

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

      【讨论】:

      • 感谢您的快速回答!我做了一些研究,但我无法完全弄清楚您的解决方案是如何工作的。你能提供更多细节吗?谢谢!
      猜你喜欢
      • 2021-10-01
      • 2020-12-31
      • 2019-08-16
      • 1970-01-01
      • 2015-08-26
      • 2021-10-16
      • 2015-06-10
      • 2016-10-10
      • 2018-02-04
      相关资源
      最近更新 更多