Docker中修改MySQL密码

问题描述

MySQL是安装在Docker中的,项目中使用的都是非root账号登录的MySQL且没有mysql库的权限,时间一长就把root的密码给忘记了.

修改密码步骤

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

#  mysql-5.7 为数据库容器名
docker exec -it  mysql-5.7 /bin/sh

2. 安装编辑器

不知道是否我安装的MySQL镜像的问题,容器中没有vim也没有vi,所以自己安装一个,如果有可以跳过

apt-get update
apt-get install vim

3. 修改配置跳过密码验证

vim /etc/mysql/conf.d/docker.cnf

# 在最后添加skip-grant-tables
[mysqld]
skip-host-cache
skip-name-resolve
skip-grant-tables

也可以修改my.cnf,这个文件所有MySQL通用,docker.cnf只有docker中存在

vim /etc/mysql/my.cnf

# 在最后添加skip-grant-tables
...
skip-grant-tables

修改完后保存并退出容器

4. 重启MySQL

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

docker exec -it  mysql-5.7 /bin/sh

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

5. 修改root账号密码

# 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. 还原配置

按第3步,删除skip-grant-tables,还原配置.退出容器,重启MySQL就可以了

0%