Mysql_Faq: ERROR 1396 (HY000): Operation CREATE USER failed for ‘username’@’hostname’

suzf.net  純手工打造 j_0028.gif



在對mysql 權限進行管理的時候出現如下錯誤:ERROR 1396 (HY000): Operation CREATE USER failed for ‘username’@’hostname’

But 這個用戶只真是存在的 。回想一個之前的操作 : 先是用 grant 語句創建了一個用戶,然後權限有變 用 update 更新了一下 mysql.user 的數據 。結果就出現了上面的錯誤 。
解決辦法 :刪除無效/衝突的用戶授權 ,重新根據需求授權。
這就是說 MySQL 權限控制最好是使用統一的操作方式。

FLUSH PRIVILEGES不會刪除用戶 ,而是從mysql數據庫中的授權表重新載入權限。

GRANT, CREATE USER, CREATE SERVER, and INSTALL PLUGIN 語句 是緩存到服務器內存當中的 。該內存不會被釋放由相應的REVOKE, DROP USER, DROP SERVER, and UNINSTALL PLUGIN 語句,因此對於執行該語句的過多的情況下,會有增加內存使用。該緩存內存可以被釋放使用 FLUSH PRIVILEGES。

DROP USER
DROP USER user[,user] …
http://dev.mysql.com/doc/refman/5.1/en/drop-user.html
DROP USER ‘username’@HOSTNAME;
CREATE USER ‘username’@HOSTNAME [IDENTIFIED BY ‘password’];
你可能會需要的,如果你使用的刪除刷新權限。
請記住:這並不一定撤銷所有該用戶可能有(如表的權限)的權限,你將不得不這樣做
如果你不這樣做,你可能無法重新創建用戶。
REVOKE ALL PRIVILEGES, GRANT OPTION FROM ‘username’@HOSTNAME;
DELETE FROM mysql.user WHERE user=’username';
FLUSH PRIVILEGES;
CREATE USER ‘username’@HOSTNAME [IDENTIFIED BY ‘password’];

用戶的帳戶名是等價的:
以“user_name’@’%’。例如,’user_name’ 等同於 ‘user_name’@’%’。

補充閱讀:http://dev.mysql.com/doc/refman/5.1/en/account-names.html
請閱讀進一步 bug:
http://bugs.mysql.com/bug.php?id=28331
http://bugs.mysql.com/bug.php?id=62255


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