本人腾讯云服务器,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)