所以即時得到非常普遍的ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
MySQL錯誤時。我已經嘗試了論壇上的所有典型修復,通過mysql_safe方法登錄,然後嘗試重置我的root密碼。但是,當這樣做時,它返回;正確的MySQL的語法錯誤創建用戶
UPDATE user SET password=PASSWORD("PASSWORD")WHERE user="root";
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
因此,現在的行受到影響,我認爲沒有用戶真正改變。我試圖創建一個用戶:
CREATE USER 'root'@'localhost' IDENTIFIED BY 'root'
-> GRANT ALL ON *.* TO 'root'@'localhost'
-> flush privileges;
However this returns with ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GRANT ALL ON *.* TO 'root'@'localhost'
看到當前用戶是什麼:
mysql> SELECT user();
+--------+
| user() |
+--------+
| [email protected] |
+--------+
我認爲語法錯誤是,沒有一樣是「根」後,@後的事實。我如何編輯這些信息爲root @ localhost並糾正問題?
UPDATE
仔細閱讀mysqld的文檔,我得到這個部分,其完美地工作了。
停止mysqld的與使用--skip-grant-tables選項重啓。這使任何人都可以在沒有密碼的情況下連接所有權限。由於這是不安全的,因此您可能希望將--skip-grant-tables與--skip-networking一起使用,以防止遠程客戶端連接。
連接到使用此命令mysqld服務器:
shell> mysql
問題在MySQL客戶端下面的語句。將密碼替換爲您要使用的密碼。
mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
-> WHERE User='root';
mysql> FLUSH PRIVILEGES;
FLUSH語句會通知服務器將授權表重新加載到內存中,以便通知密碼更改。
你爲什麼不使用'SET PASSWORD'呢?這自動執行'沖洗privileges':http://dev.mysql.com/doc/refman/5.5/en/set-password.html –