1. 打开命令窗口cmd,输入停止MySQL服务命令:
net stop mysql
2.开启跳过密码验证登录的MySQL服务,输入命令:
mysqld --console --skip-grant-tables --shared-memory
3.再打开一个新的cmd,无密码登录MySQL,输入登录命令:
mysql -u root -p
4. 密码置为空(此时不能修改新密码),命令如下:
use mysqlupdate user set authentication_string='' where user='root';
关于为什么不在置空的时候就直接设置新密码:
因为 user 表中的密码 authentication_string 是密文,如果直接通过
update user set authentication_string=’’ where user=‘root’;来设置,密码为明文,实际登录无法匹配
更新设置完密码为空后,刷新权限。输入:
flush privileges;
5.退出mysql,执行命令:
quit
6. 关闭以mysqld-console --skip-grant-tables --shared-memory 启动MySQL服务的窗口,
7. 关闭那个修改账号为空的窗口;在重新开一个cmd窗口,打开命令框,输入:net start mysql 启动MySQL服务,一管理员的身份运行cmd。
.此时,打开navicat,将连接的密码设置为空,连接数据,连接成功。
8.步骤4密码已经置空,所以无密码状态登录MySQL,输入登录命令:
mysql -u root -p
回车后会让我们输入密码,因为第二步是开启跳过密码验证的MySQL服务;所以不用输密码,直接回车就行;
9. 修改数据库密码:
alter user 'root'@'localhost' IDENTIFIED BY '123456';
注意: 此命令的‘localhost’为root账号的host,如果为其他,改用其他
此时,打开navicat,将连接的密码设置为: 123456,连接数据,连接成功。
查看用户信息:select host, user, authentication_string, plugin from mysql.user;
发现root账号的密码,已经变成了密文
到此mysql 已经修改完毕