出现 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
错误,通常是由于 MySQL 用户身份验证失败,可能的原因包括密码错误、用户权限配置问题或身份验证插件不匹配等。以下是解决方法:
1. 检查密码是否正确
确保输入的密码与 MySQL 中为 root
用户设置的密码一致。
如果忘记了密码,请参考第 3 节“重置 MySQL 密码”。
2. 检查 MySQL 用户权限
确认 root
用户是否有从 localhost
登录的权限。
步骤:
使用其他具有权限的 MySQL 用户登录:
mysql -u another_user -p
查看 root
用户的权限配置:
SELECT host, user FROM mysql.user WHERE user = 'root';
确保 root
用户有 localhost
的访问权限。如果没有,使用以下命令添加:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
3. 重置 MySQL 密码
如果忘记了 root
用户密码,可以通过以下步骤重置密码。
步骤:
1. 停止 MySQL 服务:
Linux:
sudo systemctl stop mysql
- Windows: 停止 MySQL 服务(通过服务管理器)。
2. 启动 MySQL 无密码模式:
sudo mysqld_safe --skip-grant-tables &
3. 使用无密码模式登录 MySQL:
mysql -u root
4. 更新 root
用户密码:
USE mysql;
UPDATE user SET authentication_string=PASSWORD('new_password') WHERE User='root';
FLUSH PRIVILEGES;
5. 退出并重新启动 MySQL 服务:
sudo systemctl restart mysql
6. 测试新密码登录:
mysql -u root -p
4. 检查身份验证插件
MySQL 5.7 及以上版本默认使用 caching_sha2_password
插件,可能会导致兼容性问题。
步骤:
检查当前身份验证插件:
SELECT user, host, plugin FROM mysql.user WHERE user = 'root';
如果不是 mysql_native_password
,可以切换:
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY 'your_password';
FLUSH PRIVILEGES;
5. 可能的配置文件问题
检查 MySQL 配置文件(/etc/my.cnf
或 /etc/mysql/my.cnf
)中是否存在错误配置,例如 skip-grant-tables
导致权限未被检查。
解决方法:
打开配置文件:
sudo nano /etc/my.cnf
检查 [mysqld]
下是否有以下内容:
skip-grant-tables
如果存在,删除或注释掉,并重启 MySQL 服务。
6. 检查 MySQL 服务状态
确保 MySQL 服务正在运行:
sudo systemctl status mysql
如果服务未运行,尝试启动:
sudo systemctl start mysql
通过上述方法,你应能够解决 ERROR 1045 (28000)
的问题。如果仍有困难,请提供详细的错误信息或日志,我将进一步帮助!
发布者:myrgd,转载请注明出处:https://www.object-c.cn/4658