Access denied for user ‘root‘@‘localhost‘(using password:YES)

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表详解

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值