mysql - 如何在 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 重置密码?
解决方案
以下解决方案对我有用:
使用 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)
推荐阅读
- r - R rlang:dplyr::mutate 中的 call_args
- python - 从 Python 中的 GUI 表中读取数据
- python - TypeError("'AssetId' 是 Assets 的无效关键字参数")
- java - 在 shadowroot 内部的 Modal 内部初始化 Autocomplete 不起作用
- google-apps-script - 授权非管理员用户在 Google Apps 脚本中运行 Admin SDK
- angular - 使用 typeahead ngx-bootstrap 合并两个调用并显示结果?
- flutter - 提示文本和文本在 textformfield 中具有不同的 maxline
- python - 如何在 Django admin 中隐藏(不禁用)ModelAdmin 列表视图中的操作添加模型按钮?
- node.js - 使用旋转文件流暂停/停止文件旋转
- amazon-web-services - AWS CloudFormation:Cognito LambdaTrigger CustomEmailSender - 属性“AWS CloudFormation 目前不支持。” 和 CDK 的使用