本文所有操作都是在linux系统下进行的,使用的终端工具是Xshell或MobaXterm
在docker容器中的mysql镜像修改密码,本文的方法也适用
1 关闭mysql服务
sudo systemctl stop mysqld
2 修改配置文件
2.1 操作文件,进入"普通模式"
vi /etc/my.cnf
2.2 "普通模式"按 i键 转到"编辑模式"
在文件最下面一行添加如下标识,表示登录mysql时跳过密码验证
skip-grant-tables
2.3 "编辑模式"按ESC键转到"普通模式",保存并退出
:w+回车 //保存(不退出)
:q!+回车 //强制退出(不保存)
:wq+回车 //保存并退出
3 启动mysql服务
sudo systemctl start mysqld
4 登录mysql
注意:此次登录不再需要输入密码了,直接回车
mysql -uroot -p
5 将密码设置为空
注意:在linux中执行sql语句,一定要在sql语句最后加 ; 然后回车
update mysql.user set authentication_string = '' where user = 'root';
quit; #退出mysql
6 再次修改配置文件
再次修改my.cnf文件,去除skip-grant-tables
7 重启mysql服务
sudo systemctl restart mysqld
8 正式修改密码
8.1 登录mysql(此次同样不需要输入密码)
8.2 修改密码
这里修改的是远程连接时用的密码(可以与"本机连接"设置为相同的)
alter user 'root'@'%' identified with mysql_native_password by '新密码';
这里修改的是本机连接时用的密码(可以与"远程连接"设置为相同的)
alter user 'root'@'localhost' identified with mysql_native_password by '新密码';
8.3 刷新
flush privileges;
8.4 退出mysql
quit;