MySQL 密碼確認方法|初始密碼、重設步驟、疑難排解完整指南

1. 簡介

MySQL 是許多網頁應用程式和資料庫系統中使用的關鍵工具。然而,在運作過程中,遇到「忘記密碼」或「不知道初始密碼」等情況,並不少見。此類問題可能對業務進度和資料庫安全性造成重大影響。

本篇文章將詳細說明如何確認 MySQL 的初始密碼,以及忘記密碼時的重設方法,以讓初學者也能輕鬆理解。此外,我們提供 Linux 環境和 Windows 環境的兩種對應步驟,讓讀者能根據實際環境取得適合的資訊。

此外,文章後半部還會介紹密碼政策的確認與變更方法,以及常見錯誤的因應之道。透過這些內容,您能全面學習如何更安全且高效地運作 MySQL。

閱讀本篇文章後,您將能夠理解並實作以下內容。

  • MySQL 初始密碼的確認方法
  • 忘記密碼時的重設步驟(Linux 和 Windows 對應)
  • 疑難排解以及密碼政策的設定方法

請務必閱讀至最後,打造一個能安心使用 MySQL 的環境吧。

2. MySQL 初始密碼的確認方法

如果首次安裝 MySQL,預設會設定初始密碼。如果能夠確認此初始密碼,第一次登入或密碼變更作業就能順利進行。本節將具體說明 Linux 環境與 Windows 環境中初始密碼的確認方法。

2.1 Linux 環境中的初始密碼確認方法

在 Linux 環境中,可以透過確認 MySQL 安裝後產生的記錄檔來確認初始密碼。請依循以下步驟操作。

步驟:

  1. 開啟終端機。
  2. 執行下列指令,確認記錄檔內容。
   sudo cat /var/log/mysqld.log | grep 'temporary password'
  1. 指令執行結果中,會與「temporary password」描述一同顯示初始密碼。
  • 範例:
    2025-01-19T10:45:32.123456Z 1 [Note] A temporary password is generated for root@localhost: Abc12345!
  • 在此情況下,Abc12345! 即為初始密碼。
  1. 記下初始密碼,並在登入 MySQL 時使用。

注意事項:

  • 初始密碼為了保護安全性而隨機產生。
  • 首次登入後,必定會要求變更密碼,因此請設定新密碼。

2.2 Windows 環境中的初始密碼確認方法

在 Windows 環境中,可以透過 MySQL 初始設定時產生的記錄檔或安裝程式的畫面來確認初始密碼。請參考以下步驟。

步驟:

  1. 開啟安裝 MySQL 的目錄。
  • 預設路徑通常如下。
    C:ProgramDataMySQLMySQL Server X.XLogs
    ※ X.X 表示 MySQL 的版本號碼。
  1. 尋找名為 mysqld.log 的檔案。
  2. 使用記事本或任意文字編輯器開啟記錄檔。
  3. 在檔案內搜尋,找出「temporary password」關鍵字。
  • 初始密碼會與「root@localhost」的描述一同顯示。
  1. 記下初始密碼,並在登入 MySQL 時使用。

補充:

  • 依安裝程式而定,安裝過程中初始密碼可能會顯示在畫面上。此時,建議以螢幕截圖儲存畫面。

3. 忘記密碼時的處理方法

即使忘記了 MySQL 的密碼,也可以使用幾種方法來重設。本節將說明 Linux 環境和 Windows 環境中的密碼重設程序。所有方法都需要管理員權限,因此在執行時,請以系統管理員身分操作。

3.1 Linux 環境中的密碼重設方法

在 Linux 環境中,一般使用以安全模式(–skip-grant-tables 選項)啟動 MySQL 並設定新密碼的方法。

步驟:

  1. 停止 MySQL 服務
    執行下列指令來停止 MySQL 服務。
   sudo systemctl stop mysqld
  1. 以安全模式啟動 MySQL
    在安全模式下,會跳過使用者驗證,因此可以不輸入密碼存取 MySQL。執行下列指令。
   sudo mysqld_safe --skip-grant-tables &
  1. 登入 MySQL
    安全模式啟動後,使用下列指令登入 MySQL。
   mysql -u root
  1. 設定新密碼
    執行下列 SQL 指令來設定新密碼。
   ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';

※ 請將 NewPassword123! 的部分替換為適當的新密碼。

  1. 重新啟動服務
    密碼設定後,以一般模式重新啟動 MySQL 服務。
   sudo systemctl stop mysqld
   sudo systemctl start mysqld
  1. 使用新密碼確認登入
    請確認可以使用設定的新密碼登入 MySQL。

3.2 Windows 環境中的密碼重設方法

在 Windows 環境中,可以使用 --init-file 選項啟動 MySQL 來重設密碼。

步驟:

  1. 停止 MySQL 服務
    開啟服務管理員,並停止「MySQL 服務」。
  2. 建立重設用的 SQL 檔案
    使用任意文字編輯器建立下列內容的 SQL 檔案(例如:reset_password.sql),並儲存至適當的目錄。
   ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';

※ 請將 NewPassword123! 替換為希望的新密碼。

  1. 使用 --init-file 選項啟動 MySQL
    以管理員權限開啟命令提示字元,並執行下列指令。
   mysqld --init-file="C:path    o
eset_password.sql"

※ 請將 C:path o eset_password.sql 替換為建立的 SQL 檔案的儲存路徑。

  1. 重新啟動服務
    以一般模式重新啟動 MySQL。在服務管理員中重新啟動服務,或執行下列指令。
   net start mysql
  1. 使用新密碼確認登入
    請確認可以使用設定的新密碼登入 MySQL。

4. 密碼原則的確認與設定

MySQL 為了確保密碼的安全性,提供了「密碼原則」功能。透過此功能,可以設定最低複雜度、長度等標準。本節將說明目前原則的確認方法,以及必要時的設定變更步驟。

4.1 密碼原則的確認方法

要確認目前的密碼原則,請使用 validate_password 外掛。此外掛啟用時,MySQL 會根據設定的原則驗證密碼。

步驟:

  1. 登入 MySQL。
   mysql -u root -p
  1. 為了確認目前的原則設定,請執行下列指令。
   SHOW VARIABLES LIKE 'validate_password%';
  1. 執行結果將顯示下列設定項目。
  • validate_password.policy: 密碼原則的強度等級
    • 0 (LOW): 僅允許英數字
    • 1 (MEDIUM): 要求英數字與特殊字元
    • 2 (STRONG): 要求英數字、特殊字元、英大寫字母、英小寫字母
  • validate_password.length: 密碼的最低字元數
  • validate_password.mixed_case_count: 要求大寫・小寫的最低數量
  • validate_password.number_count: 數字的最低必要數量
  • validate_password.special_char_count: 特殊字元的最低必要數量

4.2 密碼原則的設定變更

依需要,可以緩和或強化密碼原則。以下顯示範例。

變更原則設定的步驟:

  1. 登入 MySQL。
   mysql -u root -p
  1. 執行變更目前設定的 SQL 指令。 範例 1: 緩和原則(變更為 LOW 等級)
   SET GLOBAL validate_password.policy = 0;
   SET GLOBAL validate_password.length = 8;

範例 2: 強化原則(變更為 STRONG 等級)

   SET GLOBAL validate_password.policy = 2;
   SET GLOBAL validate_password.length = 12;
   SET GLOBAL validate_password.special_char_count = 2;
  1. 確認設定已套用。
   SHOW VARIABLES LIKE 'validate_password%';

注意事項:

  • 建議在 my.cnfmy.ini 檔案中記載設定,以在 MySQL 服務重新啟動後仍維持。
  • 範例:
   [mysqld]
   validate_password.policy=1
   validate_password.length=10

4.3 設定變更時的考量事項

  • 安全性與便利性的平衡
    強化密碼原則可提升安全性,但管理可能變得繁瑣。特別是在新手較多的環境中,應避免不必要的嚴格原則。
  • 運作時的影響
    若現有使用者不符合新原則,則在原則變更後更新密碼時會發生錯誤。變更前請確認影響範圍。
  • 防止密碼重複使用
    在運作環境中,也請考慮啟用防止過去使用過密碼重複使用的功能。

5. 疑難排解

MySQL 的密碼確認或重設手續在執行時,可能會發生預期外的錯誤。本節將詳細說明常見問題的範例及其解決方法。

5.1 常見錯誤及其原因

錯誤 1: 權限錯誤(Access Denied for User)

  • 原因: 在登入 MySQL 時指定的使用者名稱或密碼錯誤,或是缺少必要的權限時會發生。
  • 解決方法:
  1. 確認是否使用正確的使用者名稱和密碼。
  2. 使用 root 使用者登入,或是向管理員請求確認權限。
  3. 必要時,使用安全模式(–skip-grant-tables)啟動 MySQL 並修正權限。

錯誤 2: MySQL 服務無法啟動

  • 原因: MySQL 的設定檔(my.cnfmy.ini)有錯誤,或是磁碟空間不足時會發生。
  • 解決方法:
  1. 確認 MySQL 的錯誤記錄檔。
    • Linux 的情況: /var/log/mysqld.log
    • Windows 的情況: C:ProgramDataMySQLMySQL Server X.XLogsmysqld.log
  2. 如果設定檔有錯誤,則進行修正。特別是確認新添加的設定是否正確。
  3. 如果磁碟空間不足,則刪除不必要的檔案或擴充儲存空間。
  4. 修正後,重啟服務。
    bash sudo systemctl restart mysqld

錯誤 3: 密碼變更未反映

  • 原因: 密碼變更後,權限表格可能未更新。
  • 解決方法:
  1. 執行密碼變更指令後,使用下列指令更新權限表格。
    sql FLUSH PRIVILEGES;
  2. 重啟 MySQL 服務,並使用新密碼嘗試登入。

5.2 安全模式下的復原

如果上述解決方法無法解決問題,則可以使用安全模式嘗試復原。

手續:

  1. 停止 MySQL 服務。
   sudo systemctl stop mysqld
  1. 以安全模式啟動 MySQL。
   sudo mysqld_safe --skip-grant-tables &
  1. 在安全模式下登入 MySQL,並修正有問題的使用者權限或密碼。
  2. 修正後,結束安全模式並以一般模式重啟 MySQL。
   sudo systemctl restart mysqld

5.3 錯誤記錄的使用方法

MySQL 的錯誤記錄是疑難排解中最重要資訊來源之一。請依下列手續確認錯誤記錄,並用於問題解決。

手續:

  1. 確認錯誤記錄的位置。
  • Linux 的情況(一般路徑): /var/log/mysqld.log
  • Windows 的情況: C:ProgramDataMySQLMySQL Server X.XLogsmysqld.log
  1. 顯示記錄檔。
   tail -n 100 /var/log/mysqld.log

※ 若要確認最新的錯誤,可以添加 -f 選項來即時監視。

   tail -f /var/log/mysqld.log
  1. 閱讀記錄訊息,並特定錯誤的原因。

5.4 問題無法解決時的因應措施

  • 參考官方文件
    MySQL 的官方文件刊載了各版本的詳細疑難排解資訊。
    MySQL 官方文件
  • 利用支援論壇
    在社群論壇或 Stack Overflow 搜尋類似問題,並尋找解決方案。
  • 諮詢專家
    如果問題無法解決,請諮詢系統管理員或 MySQL 專家。

6. FAQ

MySQL 的密碼管理和重設相關作業中,可能會產生各種疑問或問題。本節假設讀者可能提出的問題,並以易懂的方式說明各自的解決方案。

Q1: 初期密碼找不到時該怎麼辦?

A1:
如果找不到 MySQL 的初始密碼,請試試以下步驟。

  1. 重新確認日誌檔案
  • Linux 的情況: /var/log/mysqld.log
  • Windows 的情況: C:ProgramDataMySQLMySQL Server X.XLogsmysqld.log
    初始密碼通常會連同「temporary password」這段描述記錄在日誌檔案中。
  1. 確認安裝程式的畫面
    在 Windows 環境中,MySQL 安裝程式可能會顯示初始密碼。請確認安裝直後是否有拍攝畫面截圖。
  2. 考慮重新安裝
    如果實在找不到初始密碼,可以解除安裝 MySQL 並重新安裝,藉此再次取得初始密碼。

Q2: 為什麼重設密碼後還是無法登入?

A2:
即使重設了密碼仍無法登入時,請確認以下事項:

  1. 確認使用者名稱和主機名稱
  • MySQL 中,使用者名稱和主機名稱的組合非常重要(例如:'root'@'localhost')。使用 '%' 時,將允許從所有主機存取。
  • 確認使用者清單的指令:
    sql SELECT User, Host FROM mysql.user;
  1. 忘記更新權限表格
    重設密碼後若未更新權限表格,新密碼就不會生效。請執行以下指令。
   FLUSH PRIVILEGES;
  1. 重新啟動 MySQL 服務
    重設密碼後,請重新啟動 MySQL 服務再試著登入。
   sudo systemctl restart mysqld

Q3: 可以停用密碼原則嗎?

A3:
可以停用密碼原則,但這會增加安全性風險,因此請慎重考量。以下步驟可以停用 validate_password 外掛。

  1. 登入 MySQL。
   mysql -u root -p
  1. 執行停用外掛的指令。
   UNINSTALL PLUGIN validate_password;
  1. 確認設定已停用。
   SHOW PLUGINS;

注意:
此操作將允許簡單的密碼,特別是在生產環境中,請加強其他安全措施作為替代。

Q4: 重設密碼過程中出現錯誤時的因應方式是?

A4:
關於重設過程中的錯誤,請參考以下步驟。

  1. 確認錯誤訊息
  • 檢查錯誤日誌以確認詳細訊息。
    • Linux 的情況: /var/log/mysqld.log
    • Windows 的情況: C:ProgramDataMySQLMySQL Server X.XLogsmysqld.log
  1. 以安全模式修正
    如果錯誤持續發生,請以安全模式(--skip-grant-tables)啟動 MySQL,並修正有問題的設定。
  2. 刪除現有使用者並重新建立
    如果問題與使用者相關,刪除該使用者並重新建立也是一個有效方法。
   DROP USER 'root'@'localhost';
   CREATE USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
   GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';

Q5: 如果與其他管理者共用,變更密碼會有什麼影響?

A5:
如果有多位管理者,變更密碼可能會產生以下影響。

  1. 影響範圍
    如果其他管理者共用的系統或指令碼使用舊密碼,就會發生連線錯誤。
  2. 事先通知
    變更密碼時,請事先通知其他管理者,並視需要請他們更新指令碼或設定。
  3. 變更後的協作
    變更後,請確保安全共用新密碼的方法(例如:使用加密訊息工具)。

7. 總結

MySQL 的密碼確認與重設,是資料庫運作中不可避免的重要作業之一。本文為了讓初學者也能實踐,從初始密碼的確認方法,到忘記密碼時的重設步驟,進一步到密碼政策的設定與疑難排解,都全面性地說明了。

本文學到的主要要點

  1. 初始密碼的確認方法
  • 在 Linux 環境中,確認 /var/log/mysqld.log,在 Windows 環境中,確認 mysqld.log 檔案,即可取得初始密碼。
  1. 忘記密碼時的重設方法
  • 分別學習了 Linux 和 Windows 環境下,使用安全模式或 --init-file 選項的重設步驟。
  1. 密碼政策的確認與設定
  • 說明了活用 validate_password 外掛程式,依環境設定政策的做法。
  1. 疑難排解
  • 具體介紹了權限錯誤或服務啟動問題等,常見錯誤的因應方法。
  1. 在 FAQ 中補充解決方法
  • 提供了密碼確認與重設時的疑問與問題的解答。

對讀者的建議

為了安全且有效率地運作 MySQL,請注意以下要點。

  • 徹底密碼管理
    請設定強力的密碼,並適當保管。此外,定期變更密碼可強化安全性。
  • 活用錯誤記錄
    發生問題時,請養成確認錯誤記錄以特定原因的習慣。
  • 參考官方文件
    MySQL 的官方資源提供了針對版本的最新資訊。必要時請參考。

下一個步驟

透過實踐本文介紹的步驟,您應該已經掌握了 MySQL 基本的密碼管理和問題解決技能。作為下一個步驟,不妨考慮以下事項。

  • 進一步強化安全性
    透過防火牆設定或 SSL 連線的使用,提升資料庫整體的安全性。
  • 檢討備份運作
    確立定期備份的排程,讓資料遺失的防備萬無一失。

請適當管理 MySQL,實現無問題的舒適運作。本文若能成為您的助力,將不勝榮幸。