mysql使用者帳號同時有localhost和%遇到的問題及處理方式

印象中,同帳號不同host可以並存,例如root@localhost和root@%,一直以來開發環境似乎都是這樣。

但今天遇到phpmyadmin的使用者帳號列表提示訊息:因為同帳號有host為locahost的,會導致host為%的帳號無法登入。所以索性刪了root@locahost的使用者,結果還是無法登入,後來推想應該是另一組帳號空白的localhost造成的。

但此時因為已經刪除root@localhost,結果沒辦法再新增刪除使用者。這時可以找到my.ini或my.cnf裡的mysqld段落加上skip_grant_tables,例如:

[mysqld]
skip_grant_tables

加上後要重啟mysql。這時應該就可以利用系統裡還有的使用者帳號登入。

但因為使用skip_grant_tables,有些需要用到權限的指令沒辦法用,但還是可以使用sql存取資料表,所以我就直接使用sql去刪除mysql.user裡的指定帳號,以解決上述同帳號不同host造成的無法登入問題。

刪除後記得要將上述的skip_grant_tables給移除或註解。

重新再登入就可以成功了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Proudly using Dynamic Headers by Nicasio WordPress Design