问题描述
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就可以了