在给新项目做数据库配置的时候,发现一个奇怪的问题:

使用命令:

mysql> insert into mysql.user(Host,User,Password) values("1.1.1.1","test",password("pswd"));

创建用户后,执行权限配置命令:

mysql> grant all privileges on testDB.* to 'test'@'1.1.1.1'identified by 'pswd';

会提示can't find any matching row in the user table意思是在user表里找不到这个用户,但是直接用select 查询user表,是可以查到的。


原因是我们创建用户后,只是写入了user表,但是并没有及时写入权限表(grant table)。

所以需要在insert之后,执行 FLUSH PRIVILEGES命令,更新grant table,此时grant table里有了我们刚插入的用户,才能对它进行权限修改:

mysql> FLUSH PRIVILEGES;

然后再次执行:

mysql> grant all privileges on testDB.* to 'test'@'1.1.1.1'identified by 'pswd';

这次提示执行成功,但别忘了再执行一下:

mysql> FLUSH PRIVILEGES;  把改动及时写入grant table

发布评论

分享到:

IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

Java问题-java进程占用内存过高,排查原因讲解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。