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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章