【本人亲测 已解决】044 - Access denied for user ‘root‘@‘%‘ to database ‘数据库名称‘

当尝试使用Navicat创建远程MySQL数据库时遇到1044错误,原因是root用户权限不足。通过在Linux命令行中检查mysql.user表的权限,发现多个权限被设置为no。解决方案是更新root用户的权限,将所有权限设置为yes,然后重启MySQL服务,问题即可解决。

问题描述

情况一: Navicat连接远程mysql数据库,创建数据库时出现错误:1044 - Access denied for user 'root'@'%' to database '数据库名称'
在这里插入图片描述
情况二: 在linux中命令创建数据库出现如下报错:
在这里插入图片描述


原因分析:

root权限不够,登录mysql后通过 SELECT * FROM mysql.user;命令查询权限信息,可以看到root对应的很多权限都是no,如下图所示:

在这里插入图片描述
补充:至于为什么会出现root权限不够,可能是安装mysql的时候MySQL权限配置不正确,或者修改了相关的配置文件等。


解决方案:

将root权限全部修改为yes,执行如下代码(记得退出mysql,重启服务):

use mysql; 
update user set Update_priv ='Y' where user = 'root';
update user set Select_priv ='Y' where user = 'root';
update user set Insert_priv ='Y' where user = 'root';
update user set Update_priv ='Y' where user = 'root';
update user set Delete_priv ='Y' where user = 'root';
update user set Create_priv ='Y' where user = 'root';
update user set Drop_priv ='Y' where user = 'root';
update user set Reload_priv ='Y' where user = 'root';
update user set Shutdown_priv ='Y' where user = 'root';
update user set Process_priv ='Y' where user = 'root';
update user set File_priv ='Y' where user = 'root';
update user set Grant_priv ='Y' where user = 'root';
update user set References_priv ='Y' where user = 'root';
update user set Index_priv ='Y' where user = 'root';
update user set Alter_priv ='Y' where user = 'root';
update user set Show_db_priv ='Y' where user = 'root';
update user set Super_priv ='Y' where user = 'root';
update user set Create_tmp_table_priv ='Y' where user = 'root';
update user set Lock_tables_priv ='Y' where user = 'root';
update user set Execute_priv ='Y' where user = 'root';
update user set Repl_slave_priv ='Y' where user = 'root';
update user set Repl_client_priv ='Y' where user = 'root';
update user set Create_view_priv ='Y' where user = 'root';
update user set Show_view_priv ='Y' where user = 'root';
update user set Create_routine_priv ='Y' where user = 'root';
update user set Alter_routine_priv ='Y' where user = 'root';
update user set Create_user_priv ='Y' where user = 'root';
update user set Event_priv ='Y' where user = 'root';
update user set Trigger_priv ='Y' where user = 'root';
// 退出mysql
exit
// 重启mysql服务
service mysqld restart

当你再去查询权限的时候已经全部修改为yes,问题就已经解决了,可以对数据库进行操作啦!!
在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PRINT!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值