如果完全忘记密码或无法登录——重置 root 密码(通用方法)
对于 MySQL 8.0 / 5.7(推荐方法):
1. 停止 MySQL 服务:
sudo systemctl stop mysql # Linux (systemd)
# 或者
sudo service mysql stop
Windows:以管理员身份运行 net stop MySQL。
2. 跳过权限表启动 MySQL:
bash
sudo mysqld_safe --skip-grant-tables &
注意:如果
mysqld_safe不可用,可以直接运行:
sudo mysqld --skip-grant-tables --skip-networking &
3. 无密码登录:
mysql -u root
4. 清空 root 密码(先清空再重新设置):
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
5. 退出并正常重启 MySQL:
sudo systemctl restart mysql
6. 无密码登录后重新设置新密码:
mysql -u root -p # 直接回车,密码为空
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES;
4️⃣ 检查 root 账号的主机权限
登录成功后(无论是通过 127.0.0.1 还是重置密码后),执行:
SELECT host, user, authentication_string, plugin FROM mysql.user WHERE user='root';
-
如果
host列只有%而没有localhost,说明 root 不允许从 localhost 登录,你需要添加一个localhost的 root:CREATE USER 'root'@'localhost' IDENTIFIED BY '你的密码'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; -
如果
plugin列显示caching_sha2_password,而你的客户端很老(比如 MySQL 5.x 客户端),可以改为mysql_native_password:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES;
🧪 最后验证
完成上述修复后,尝试:
mysql -u root -p -h localhost
输入你设置的正确密码,应该就能登录了。之后你就可以继续去检查和修改 yftest 账号的权限了。
617

被折叠的 条评论
为什么被折叠?



