[MySQL错误:Access Denied For User ‘Root‘@‘%‘ To Database ‘Xxx‘]

本人腾讯云服务器,Centos 7版本,Mysql 8(部署在docker上),前一天还用的好好的第二天就报错了,于是开始百度。。。

问题起因:

使用 Navicat 远程连接数据库,正常,操作现有数据库正常,创建新数据库报错Access denied for user 'root'@'%' to database 'xxxx',如下图

 

使用SSH连接服务器,进入mysql,命令行执行创建数据库,依然是出现同样错误

 

结论:

是用户权限的问题,“访问操作被拒绝”,可能是没有权限,授权试一下

使用命令:(一下命令mysql8报语法错误)

 // grant all privileges on *.* to 'root'@'%' identified by '数据库密码' with grant option;
 grant all privileges on *.* to 'root'@'%' identified by '数据库密码' with grant option;

  结果又报错了,说什么语法错误,我服了,个人觉得是mysql8语法不一样

于是继续百度...

最终终于在一位老哥那里解决了问题...

解决方法:

切换到 mysql 库,执行如下命令:

 // 1.切换到 mysql 库下
 use mysql
 // 查询用户的所有权限
 select * from mysql.user;

结果如下图:查出满天星....

 

将查询结果复制粘贴到 EditPlus 中(变成人看的)

 

没有安装 EditPlus 的就直接看也行(就是费点眼睛)

 

发现 root 用户没有增删改查数据的权限,分别执行如下命令修改权限,以及刷新权限

 // 1.修改权限
 update mysql.user set Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y' where user = 'root' and host = '%';
 // 2.刷新权限
 flush privileges;

执行完退出登录,重启 mysql 服务。注意 :一定要重启(docker 重启mysql容器)

文章原文还要再执行授权命令,但我执行命令报错,就尝试直接创建一下看看,结果居然直接好了。

 Navicat 也能正常操作。

引用链接MySQL错误:Access denied for user 'root'@'%' to database 'xxx' - 我想养只狗 - 博客园 (cnblogs.com)

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值