我忘记了在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重置密码?
以下解决方案对我有效:
-
用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。