使用sudo仍无法解决ERROR 1045(28000):root用户本地访问MySQL被拒绝问题
修复MySQL 'root'@'localhost' 访问被拒绝的问题
核心修复步骤(适用于主流Linux发行版)
停止MySQL服务
根据系统执行对应命令:
Ubuntu/Debian:sudo systemctl stop mysqlCentOS/RHEL:
sudo systemctl stop mysqld跳过权限验证启动MySQL
启动时跳过权限表检查,实现无密码登录:
Ubuntu/Debian:sudo mysqld_safe --skip-grant-tables &CentOS/RHEL:
sudo mysqld --skip-grant-tables &旧版系统可尝试:
sudo service mysql start --skip-grant-tables无密码登录MySQL
直接执行命令进入:mysql -u root重置root用户密码
进入MySQL命令行后按版本操作:- 切换到系统核心库:
use mysql; - 重置密码:
- MySQL 5.x及更早版本:
UPDATE user SET Password=PASSWORD('你的新密码') WHERE User='root' AND Host='localhost'; - MySQL 8.0及以上版本:
先刷新权限避免报错:
再修改密码:FLUSH PRIVILEGES;ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
- MySQL 5.x及更早版本:
- 强制刷新权限:
FLUSH PRIVILEGES; - 退出MySQL:
exit;
- 切换到系统核心库:
恢复正常启动MySQL
先停止跳过权限的进程,再正常启动:sudo systemctl stop mysql sudo systemctl start mysql进程未停止时可强制杀死:
sudo pkill mysqld测试连接
执行命令输入新密码,验证登录:mysql -u root -p
额外排查方向
如果上述步骤无效,可检查:
- 查看mysql库user表中root用户的
Host字段是否为localhost - 检查MySQL配置文件(
/etc/mysql/my.cnf或/etc/my.cnf)是否有禁止root本地登录的配置 - 尝试执行
mysql_upgrade -u root -p修复可能损坏的权限表
内容的提问来源于stack exchange,提问作者soyyy
相关产品推荐
相关产品推荐

