平时也只是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。