Mysql grant all privileges on ...不生效解决方案

Posted zslhg903

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql grant all privileges on ...不生效解决方案相关的知识,希望对你有一定的参考价值。

情景:我在mac的终端下用ssh操作虚拟机中的centos,mysql运行在centos中

mysql -u root -p

用root登录mysql后

使用

grant all privileges on db1.* to [email protected]% identified by user1 with grant option;

意为:给所有主机登录(%指任意主机)的用户名为user1(密码为user1,identified by后接密码) 授予操作数据库db1下所有数据表(db1.*指db1所有数据表)的所有权限。

此时

select * from mysql.user \G;

发现user1的权限还是N,即上面授予操作无效,为什么呢?

 

原因:

这时在mysql下root登录,执行show grants;显示

grant all privileges on *.* to root@localhost xxxxxxxxxxxx

对于本地主机下登录的root用户才有所有权,而这时我是在mac的终端下ssh操作虚拟机中的mysql,这时的root用户当然没有所有权。

解决方法:回到虚拟机中登录mysql的root操作。

在虚拟机mysql中添加:

grant all privileges on *.* to root@% identified by root的密码 with grant option;

添加后再用

select * mysql.user \G;

发现多了一行,内容是用户为root,主机为%,拥有所有权限。

 

这时就可以回到mac在mysql登录root操作了。

如果这时还不行,可以用以下方法:

在mac中打开mysqlworkbench(需要另外下载),用mysql root用户远程登录虚拟机的mysql。

我这时虚拟机的地址是192.168.20.101(确保虚拟机的防火墙关了或者开启了mysql的端口3306)。

技术分享图片

 

登录后在左上角选择Users and Privileges,可以添加用户,并在Administration Roles选卡添加用户权限。

 

技术分享图片

以上是关于Mysql grant all privileges on ...不生效解决方案的主要内容,如果未能解决你的问题,请参考以下文章

mysql访问权限GRANT ALL PRIVILEGES ON,访问权限表

Mysql grant all privileges on ...不生效解决方案

mysql 赋给用户远程权限 grant all privileges on

解决mysql的赋权操作之GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION问题

拒绝拥有 GRANT ALL PRIVILEGES 的用户的 CREATE 命令

grant all privileges on *.* to root@"%" identified by ".";报错问题