Mysql创建用户后,执行grant授权命令,提示can't find any matching row in the user table
在给新项目做数据库配置的时候,发现一个奇怪的问题:
使用命令:
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
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。