Ubuntu20解决数据库出现Access denied for user ‘root‘@‘%to database ‘xxx‘ 问题

最近在分配mysql权限时出错,本台虚拟机内置的数据库mysql版本为8,因此造成mysql在重新分配权限提示"Access denied for user 'root'@'%",出错原因reload权限被收回,造成无法重新分配权限,其他类似权限问题也可以参照此方法。原先的数据库低版本或者Ubuntu18以下的版本很难造成数据库权限错误等诸多问题。

正确创建数据库和划定数据库8.0以上权限问题等可以参考网上的教程(https://blog.csdn.net/m0_54849873/article/details/126076063)这篇博客介绍的很详细透彻。

    • 创建数据库Mysql用户

进入mysql使用账号密码登录进入主界面MySQL命令行页面。

mysql -uroot -p

进入数据库交互行后使用管理员权限创建用户,代码如下。这里表示创建一个不限制ip登录的用户 network该用户的密码是 123456,%代表不限制ip登录(使用具体ip地址则换成地址即可):

create user 'network'@'%' identified by 'network';

创建用户network之后需要刷新权限privileges,否则可能出现错误,刷新权限的代码比较简单明了

flush privileges;

2 在本地新建连接都可以使用navicat登录连接用户了

连接显示正常页面则显示本地连接成功~~。这个时候你打开会发现只有information_schema和performance_schema 两个数据库,下图是本人成功实现数据库授权和创建成功的图。

3.用户赋权

完成以上的基础工作之后就可以实现赋权了,报错的主要原因:

1.因为Mysql8以上的版本不能使用grant all privileges的整体语句一次性创建,否则会出现版本报错问题。

这里表示给用户network赋予数据库network(这是我之前创建好的数据库)中所有表的所有权限with grant option表示该用户可以给其他用户赋权,但是不能超过该用户的权限,可以参考上面的教程来实现本功能。

赋权的核心SQL代码为:

grant all privileges on network.* to 'network'@'%' with grant option;
2. 第二种报错的主要原因为数据库进入的方式不对,必须要使用root管理员账号进入,否则会出现权限不足的类似原因。例如出现access denied类似原因:

解决办法:

exit //退出数据库

退出后使用root命令登录MySQL:

 mysql -uroot -p(密码)

进入之后再次使用以上的授权命令完成本数据库的授权管理,成功解决以上问题,这就是数据建库时候常出现的问题原因。

猜你喜欢

转载自blog.csdn.net/qq_49491645/article/details/128862875