MySQL忘记密码或无法登录——重置 root 密码

如果完全忘记密码或无法登录——重置 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 账号的权限了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值