Mysql创建用户后,执行grant授权命令,提示can’t find any matching row in the user table

  • Post author:
  • Post category:mysql





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




使用命令:






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



版权声明:本文为lambert310原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。