2014年11月21日 星期五

[MySQL]Account user_name@host_name does not exists but it still has privileges defined for following objects:database_name

        平常刪除帳號都用drop user,今天需要對某個DB刪除大量帳號,想說直接delete from mysql.user最快了,刪完用MySQL Workbench開啟來看是否刪乾淨了,結果發現帳號還在,只是前面多了"(!)"符號

        點擊某個帳號,出現下列訊息,好像告訴我沒有刪除乾淨

Account user_name@host_name does not exists but it still has privileges defined for following objects:database_name

       猛然想起mysql.db好像也要刪除,所以若不用drop user而直接清除user資料表,別忘記db資料表也要清喔,完整的刪除方式如下

DELETE FROM mysql.user WHERE user='phpmyadmin' and host='localhost';
DELETE FROM mysql.db   WHERE user='phpmyadmin' and host='localhost';
FLUSH PRIVILEGES;

       若用別的client工具似乎不會發現這個問題,我用Navicat打開是不會看到只刪user未刪db的帳號喔!

0 意見:

張貼留言