这个错误通常表示MySQL无法使用提供的用户名和密码进行登录操作。以下是可能导致此错误的一些原因和相应的解决方案。
原因1:用户名或密码不正确
如果提供的用户名或密码不正确,那么MySQL会提示“Access denied”错误。为了解决这个问题,你需要确认你使用的用户名和密码是正确的。你可以尝试重置密码,方法如下:
- 在终端中以root用户身份运行mysql。
sudo mysql -u root
- 执行以下命令来重置root用户的密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
- 刷新MySQL的权限:
FLUSH PRIVILEGES;
- 退出MySQL:
quit
- 以新密码重新登录:
mysql -u root -p
原因2:MySQL未以预期的方式启动
如果MySQL在启动时未按预期方式启动,则可能会导致“Access denied”错误。以下是几个可能的原因和相应的解决方案:
示例1:MySQL未以预期方式在macOS上启动
如果你在macOS上使用Homebrew安装了MySQL,并且MySQL无法启动,那么你可以尝试以下步骤来解决“Access denied”错误:
- 关闭MySQL服务:
brew services stop mysql
- 使用以下命令重置MySQL的密码:
sudo mysql_secure_installation
- 确认MySQL的安装目录:
brew info mysql
- 打开MySQL的配置文件:
open /usr/local/etc/my.cnf
- 检查配置文件中是否有以下几个行:
[mysqld]
skip-grant-tables
如果没有,请添加上面的两个行。 - 启动MySQL服务:
brew services start mysql
- 再次使用以下命令登录到MySQL:
mysql -u root -p
示例2:MySQL无法访问/tmp目录
如果MySQL在启动时无法访问/tmp目录,则可能会导致“Access denied”错误。你可以执行以下命令来授权MySQL访问/tmp目录:
sudo chmod -R 777 /tmp
原因3:防火墙阻止了MySQL的访问
如果你的主机或网络中使用了防火墙,那么防火墙可能会阻止MySQL的访问。你可以尝试禁用防火墙或允许MySQL通过防火墙。
示例1:使用ufw禁用Ubuntu上的防火墙
如果你使用的是Ubuntu,并且启用了ufw防火墙,则可以通过以下命令禁用防火墙:
- 停止ufw服务:
sudo ufw disable
- 确认ufw已禁用:
sudo ufw status
示例2:在Windows Server 2016上允许MySQL通过Windows防火墙
如果你使用的是Windows Server 2016,并且启用了Windows防火墙,则可以按照以下步骤允许MySQL通过防火墙:
- 打开防火墙高级安全性设置:
wf.msc
- 选择“Inbound Rules”选项卡。
- 单击“新建规则”菜单。
- 选择“端口”选项并单击“下一步”。
- 选择“TCP”选项并输入3306端口号。单击“下一步”。
- 选择“允许连接”选项并单击“下一步”。
- 输入规则名称并单击“完成”。
完成以上步骤后,你应该可以通过MySQL登录了。如果你仍然无法登录,请检查网络连接并联系系统管理员。
希望以上内容对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ERROR 1045 (28000): Access denied for user ”root”@”localhost” (using password: YES)实用解决方案 - Python技术站