Saturday, February 12, 2011

忘了 Password

早前為了測試一些東西,在家中的 Linux 安裝了 Apache 和 MySQL。
很久也沒有用,突然又有用,但我竟然忘記了 MySQL 的 root password。Google 了一會便找到解決方法,但我都搞了很久才搞妥,睇下死肥仔犯了甚麼白痴問題吧。(我對 Apache 和 MySQL 可算毫無認識,不懂當中的 admin、syntax…… 只是跟隨一些步驟去「用」……)

按照網上所示的指示:

1. 停止 Mysql 的運作:
/etc/rc.d/mysqld stop

2. 用以下方法執行 Mysql:
mysqld_safe --skip-grant-tables &

3. 連接 Mysql:
mysql -u root mysql

4. 改動 root password:

mysql> UPDATE user SET password=PASSWORD("NEW_PASSWORD") WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit


5. 停止 Mysql:
/etc/rc.d/mysqld stop

6. 啟動 Mysql:
/etc/rc.d/mysqld start

7. 測試:
mysql -u root -p

噢……仍然不行!為甚麼?繼續 Google,四圍列出的方法也是大同小異,那些少差異也只是因為不同的 Linux distribution 把 Mysql 裝在不同位置而矣。為甚麼我不能 reset root password?

試了很久,我終於弄清楚原因。
在步驟 4:
mysql> UPDATE user SET password=PASSWORD("NEW_PASSWORD") WHERE User='root';
假設我想把 password 改為 123,於是執行
mysql> UPDATE user SET password=123 WHERE User='root';
沒有 error message 出現,但原來應該是這樣才對:
mysql> UPDATE user SET password=PASSWORD(123) WHERE User='root';
基於我對當中的 syntax 不理解,誤以為文中括號內的只是作者給讀者的提示而矣。

我這個錯誤,實在是白痴得很。

No comments: