1. root用户出现access denied的原因

可能原因如下:

  • mysql的服务器停止
  • 用户的端口号或者IP导致
  • mysql的配置文件错误----my.ini等文件
  • root用户的密码错误

2. 非root用户出现access denied的原因

Access denied for user 'admin'@'localhost'(using password:YES)

可能的原因除了上面的4点,还有一点,这一点是我亲身遇见的。

  • 用户创建有问题,本地用户or远程用户。

解释下就是,创建了本地用户却通过远程来访问,或者创建了远程用户却通过本地用户来访问。例子,

# 创建了'admin'用户,host是'localhost',却通过admin@103.186.147.181来访问
# 创建了'admin'用户,host是'%',却通过admin@localhost来访问。
# 就会报上面的access denied错误

在Mysql的安装文件里面有个mysql的库,这是个系统库,安里面有一个user表,user表里面用username与host做双主键,
如果这张表中没有root,localhost这一行字段,那么你这个用户是无权限登陆进localhost,root也不例外,
但是默认情况下是有这个字段的,所以肯定是你安装失败,或者有人把你这张表里面的相应的这行给删掉了(mysql在你删掉系统表里不会提示,就是你删掉mysql这个系统库也不会提示)
所以最简单的做法就是替换你的mysql库,找到一个可用的mysql库,直接把里面的内容copy过来就OK了

如下图所示。
在这里插入图片描述

在MysqlDB中的mysql库中有一个user表,这个表是管理访问mysql的用户的。user字段和host字段对应的就是我们在连接mysql时的用户和主机,所以如果在这个表中没有你连接mysql所使用的用户和主机的行,那就会报上面的错误,这时候就需要创建一个该用户和主机的组合了。若需要创建用户请移步 Mysql系列之创建用户、删除用户、修改密码

参考文献

[1] Mysql系列之创建用户、删除用户、修改密码
[2] MySQL中用户权限、库权限、表权限的控制
[3] MySQL中USER表详解

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐