在 Linux 下忘记 mysql root 密码的解决方法
2016-08-02
跳过 mysql 服务的认证授权
无论 5.6 还是 5.7 都需要这一步
# 使用 service 停止服务
service mysql stop
# 或者 systemctl 停止服务
systemctl stop mysqld.service
# 命令行启动 mysql 跳过认证授权
mysqld_safe --skip-grant-tables &
# 客户端连接 mysql 服务
mysql -u root -p
Mysql5.7 找回 root 密码
注意
- 新版的 mysql 数据库的 user 表中没有 Password 字段
- 将加密后的用户密码存储于 authentication_string 字段
修改密码
mysql> update mysql.user set authentication_string=password('123') where user='root' and Host = 'localhost';
mysql> flush privileges;
mysql> quit
重启 mysql 服务
# 使用 service 重启服务
service mysql restart
# 或者使用 systemctl 重启服务
systemctl start mysqld.service
连接 mysql,alter user,完成找回密码
mysql> alter user 'root'@'localhost' identified by '123';
Mysql5.6 找回 root 密码
修改密码方法一
mysql> use mysql;
mysql> set password for 'root'@'localhost'=password('123');
mysql> flush privileges;
mysql> quit
修改密码方法二
mysql> use mysql;
mysql> update user set password=PASSWORD("123456") where user="root";
mysql> flush privileges;
mysql> quit
重启 mysql 服务,完成密码找回
# 使用 service 重启服务
service mysql restart
# 或者使用 systemctl 重启服务
systemctl start mysqld.service