2014-02-10 36 views
0

本人認真刪除了root @ localhost用戶,也就是我後來發現mysql需要工作,現在我無法用root登錄,即使密碼正確。我試圖運行MySQL插件AFE模式:在mysql數據庫中恢復MySql root @ localhost用戶

/usr/bin/mysqld_safe --skip-grant-tables 

,然後登錄電子作爲沒有密碼根進入MySQL數據庫,在那裏我應該執行:

create user [email protected]; 

然後:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' with grant option; 
commit; 
FLUSH PRIVILEGES; 
exit 

但是當我嘗試用上面的命令創建用戶時,我得到:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement 

有什麼建議如何解決這個問題?幫助是非常贊同的,謝謝!

編輯:解決方案

謝謝!這解決了我的問題:

INSERT INTO mysqluserHostUserPasswordSelect_privInsert_privUpdate_privDelete_privCreate_privDrop_privReload_privShutdown_privProcess_privFile_privGrant_privReferences_privIndex_privAlter_privShow_db_privSuper_privCreate_tmp_table_privLock_tables_privExecute_privRepl_slave_priv, Repl_client_privCreate_view_privShow_view_privCreate_routine_privAlter_routine_privCreate_user_privssl_typessl_cipherx509_issuerx509_subjectmax_questionsmax_updatesmax_connectionsmax_user_connections)VALUES( '%', '根', PASSWORD( 'NEW_PASSWORD_HERE'),「Y Y,'Y','Y','Y','Y','Y','Y','Y', 'Y','Y','Y' ,'Y','Y','Y','Y','Y','Y','Y','Y','Y', 'Y','Y','Y' 'Y','','','','','0','0','0','0');

要恢復事件和觸發器的權限,我不得不使用'all'特權訪問另一個用戶,幸運的是我有一個,但可能沒有這個特權是不可能的。

+0

INSERT'他在'mysql.user'表中,設置'Grant_priv ='Y',Super_priv ='Y'',重啓,看看它做了什麼。 – Wrikken

+0

我很擔心這隻會恢復現有root用戶的權限,但我需要重新創建root @ localhost – shiro

+0

@ user1850912看看我的答案是否會對您有所幫助。 –

回答

3

這應該恢復它,而不是重置。

停止mysql服務器。

編輯my.cnf中包括跳過補助

[mysqld] 
skip_grant_tables 

啓動MySQL。然後通過在提示符下使用mysql命令登錄到mysql。並插入此查詢,確保更新密碼new password here

INSERT INTO mysqluserHostUserPasswordSelect_privInsert_privUpdate_privDelete_privCreate_privDrop_privReload_privShutdown_privProcess_privFile_privGrant_privReferences_privIndex_privAlter_privShow_db_privSuper_privCreate_tmp_table_privLock_tables_privExecute_privRepl_slave_priv, Repl_client_privCreate_view_privShow_view_privCreate_routine_privAlter_routine_privCreate_user_privssl_typessl_cipherx509_issuerx509_subjectmax_questionsmax_updatesmax_connectionsmax_user_connections)VALUES( '%', '根', PASSWORD( 'NEW_PASSWORD_HERE'),「Y Y,'Y','Y','Y','Y','Y','Y','Y', 'Y','Y','Y' ,'Y','Y','Y','Y','Y','Y','Y','Y','Y', 'Y','Y','Y' 'Y','','','','','0','0','0','0');

運行查詢後,停止MySQL和從my.cnf文件刪除SKIP補助然後重新啓動mysql的

0

你嘗試通過ssh登錄?在控制檯中鍵入mysql -uroot 之後: 使用mysql; SELECT * FROM user;看看有什麼列 並做一個INSERT INTO user ....