Docker中修改MySQL密码

问题背景

zabbix 使用的 MySQL 是在 Docker 中启动的,发现存在 root 弱密码问题,需要进行修改。

处理过程

1. 通过 docker exec 命令进入容器

1
docker exec -it mysql-server /bin/bash

2. 修改配置文件

因为机器为离线状态无法安装新软件,采用以下方法向文件中追加多行内容

  • 如果仅追加一行,直接使用 >> 追加符号即可;
1
2
3
cat >> /etc/mysql/conf.d/docker.cnf <<EOF
skip-grant-tables
EOF
  • 需要添加的文件在两个 EOF 中间;
  • 也可以修改 /etc/mysql/my.cnf 文件,这个文件所有MySQL 通用, docker.cnf 只有 docker 中存在;

如果添加内容错了,可以使用下面的命令来删除多余内容;

1
2
# 从第2行(包括第2行)到文件末尾的所有行,会直接修改原文件
sed -i '2,$d' /etc/mysql/conf.d/docker.cnf

3. 退出 docker 重启 MySQL 容器

1
docker restart mysql-server

4. 再次进入容器,直接登录 MySQL

1
2
3
4
docker exec -it mysql-server /bin/bash

# 在容器中使用 mysql 可以直接登录了
mysql

5. 修改 root 账号密码

1
2
3
4
5
6
7
8
9
10
11
# MySQL 5.7.6+版本以上
use mysql;
UPDATE user SET authentication_string = PASSWORD('g123455.') WHERE user = 'root';
flush privileges;


# MySQL 5.7.6版本以下
use mysql;
UPDATE user SET password= PASSWORD('g123455.') WHERE user = 'root';
flush privileges;

6. 还原配置

按照第2步,删除添加的 skip-grant-tables 配置,还原配置,退出容器,重启 MySQL 就可以了。

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022-2023 ligongzhao
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信