MySQL 教材:更改通行碼

假設您可以從某台主機與 MySQL 伺服機連線。 假設 MySQL 伺服機的名字是 dbhost,您的 MySQL 帳號名是 name, 您原有的通行碼是 origpass,現在您想要將通行碼換成 newpass

首先我們要說明兩件事。

  1. MySQL 的通行碼也將會影響您的資料安全。所以應該慎選通行碼。 如果還不清楚應該如何設計通行碼,請看 UNIX 教材
  2. 老實說,MySQL 對於通行碼的防護能力,比起作業系統稍弱。 所以,如果您的 UNIX 通行碼與 MySQL 通行碼是相同的,則萬一 MySQL 的通行碼被別人猜到了, 則 UNIX 通行碼也就跟著被猜到了。因此,雖然在 UNIX 與在 MySQL 使用同一組通行碼是方便的, 但是卻不甚安全。使用者應該自行考量這個情況。

您必須在 MySQL 之外,才能換通行碼。在 UNIX 文字介面中,下指令

mysqladmin -h dbhost -u name --password=origpass password newpass
這個指令,將您的新、舊通行碼都明白回應在終端機螢幕上, 這是個很沒道理的設計。但是,目前也只有如此。 所以,請讀者注意以下三件事:
  1. 在輸入這個指令的時候,確定沒人在旁邊偷窺。
  2. 下完指令,按了 Enter 之後,立刻下指令 clear 清除螢幕。
  3. 您的曾經下過的所有指令都暫存在 $HOME/.history 檔案裡面, 如果您覺得不放心,可以刪除這個檔案。

現在,您可以試著用新通行碼簽入 MySQL。 如果不成功,用舊通行碼再試一遍。 如果用舊通行碼可以進去,代表前面的 mysqadmin 指令出了錯,沒有換成功。 如果新、舊通行碼都進不去 (這種事有時會發生), 您可以等一兩個小時之後再來試試看,否則就要請 MySQL 管理者來幫忙了。

如果已經忘記原來的通行碼,那就不能用上述方法更改通行碼。 這時候需要請 MySQL 的管理者幫忙, 也就是任何一位擁有 MySQL DBMS 之 root 帳戶的人。 這人通常是 MySQL 主機的系統管理者,但是並不一定。 為了方便,我們紀錄 root 直接修改某用戶 foo 的步驟。

  1. 首先,必須以 root 身份登入 MySQL (或者用 command line mode 也行)
  2. 下指令
    update mysql.user set password=PASSWORD("new_passwd") where user='foo';
    flush privileges;

習題

  1. 請更改 MySQL 的通行碼,並測試新通行碼是否可用。
單維彰 (2001/05/28) --- 04/08/17 (單) [Prev] [Next] [Up]