[Note] Linux 下忘记mysql密码解决办法及错误排查

xiaoxiao2025-11-11  8

错误排查 在远程连接mysql 时,有时候明明输入正确的账号和密码还是登不进去 [root@localhost ~]# mysql -uroot -p Enter password: ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES) 这时需要检查一下 root 用户的登录地点有没有限制,就是 user表中相关用户的host字段 可能是% localhost ip地址等

如果忘记了登录密码,则按照下面的方法进行重置

编辑 my.cnf 文件,这是mysql配置文件一般是在 /etc/my.cnf 位置 vim /etc/my.cnf

找到 [mysqld] 这一行

在后面 添加: skip_grant_tables 这句的意思是跳过 权限检查表 保存,然后重启mysqld服务 systemctl restart mysqld

连接mysql 这时候登录mysql没有任何限制,也不用输入密码,并且拥有root权限 mysql -u root

选择 mysql 库 use mysql

更新 user 表中 root 用户的 密码,sql语句中一定要加password函数来对密码进行加密,不然无法匹配。

update user set password = password(‘新密码’) where user = ‘root’ \g

退出 exit

再次编辑 /etc/my.cnf 文件,一定要记得删除 skip_grant_tables 这一行 重启mysqld服务 即可。

root用户的权限恢复

UPDATE user SET select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y',Event_priv='Y',Trigger_priv='Y',Create_tablespace_priv='Y' WHERE user='root';
转载请注明原文地址: https://www.6miu.com/read-5039453.html

最新回复(0)