Mysql——root用户无法给普通用户赋予权限

平时也只是Sql写的比较多,这种情况今天搭环境的时候突然用到了。

就发现root用户竟然无法给普通的用户赋予权限,就觉得很奇怪,索性就上网找了教程。

mysql安装后有几个默认自带的数据库。

有一个mysql库中有一张user表管理所有的用户信息,包括权限啥的。

查询这张表之后会发现下图式样:

Host:用来限制用户登录的,如果设置了root可以在任意机器上登录,则会多出来一条host字段为%的数据。

User:就是自己创建的用户名,包括root

password:用户的登录密码,不过是加密后的,(所以要是想改密码,也可以通过这种方式,直接对这张表update)

注:

        改密码的时候,如果对配置文件设置跳过密码,如:skip-grant-tables

        能使用这种查表方式:update mysql.user set password=PASSWORD(‘新密码‘) where User=‘root‘;

        不能使用:set password for username @localhost = password(newpwd);

        别问我为啥,我也不清楚,有人知道希望告诉一下!

        有时间我也会自己再研究一下。

后面的字段就是各种权限啥的了,我也就不一一说了。 

当你发现无法给普通用户赋予权限的时候,就查一下这个表,看一下root用户的Grant_priv字段是不是Y,

当然这上面可能会有好几条root,建议都把这个字段改成Y,要不然你远程连接,发现自己改的却是Host字段为localhost,结果还是不能成功。

改的时候,就是用update这张表的sql。

改完之后,flush privileges;一下。

然后quit,重新登录一下,应该就可以了。

下次用户相关的查这张表就ok。

 

总结一下:

当root用户无法给普通用户赋予权限的时候,

1、查mysql.user这张表,看root用户的Grant_priv是不是Y

2、如果不是则把所有root用户的这个字段改成Y

3、flush privileges;

4、退出,重连,问题应该就解决了。

猜你喜欢

转载自blog.csdn.net/weixin_42660166/article/details/113141826