在給新項目做數據庫配置的時候,發現一個奇怪的問題:
使用命令:
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