1. 簡介
MySQL 是許多系統中廣泛使用的受歡迎資料庫管理系統,但作為初始設定的其中一部分,「初始密碼」的確認和管理非常重要。特別是,如果不適當處理初始密碼,可能會導致安全風險或存取問題。
本篇文章將從 MySQL 初始密碼的確認方法開始,到變更方法,甚至是發生問題時的解決方案,都以初學者容易理解的方式說明。
2. MySQL 的初始密碼是什麼
初始密碼的概述
首次安裝 MySQL 時,資料庫的管理員使用者(通常是「root」)會被設定初始密碼。此密碼會因 MySQL 的版本而有不同的行為。
各版本的差異
- MySQL 5.7 及以後: 初始密碼會在安裝時自動產生,並輸出到記錄檔中。
- 之前的版本: 通常以無密碼(空白狀態)安裝。
為什麼初始密碼很重要
如果不適當管理初始密碼,會增加不正存取的風險。安裝後,請務必確認密碼,並視需要變更,這是推薦的做法。
3. 初始密碼的確認方法
Linux 環境的情況
Linux 環境中安裝 MySQL 的情況下,初始密碼可以透過以下步驟確認。
- 登入並開啟終端機。
- 執行下列指令來確認日誌檔案。
sudo grep 'temporary password' /var/log/mysqld.log
- 輸出的行中會有「temporary password」的描述,其後會顯示初始密碼。
範例:
2025-01-22T10:22:33.123456Z 1 [Note] A temporary password is generated for root@localhost: Abc123!@#
Windows 環境的情況
Windows 環境中,需要手動確認 mysqld.log
檔案。
- 開啟 MySQL 的安裝資料夾(通常是
C:ProgramDataMySQLMySQL Server X.X
)。 - 尋找
mysqld.log
檔案,並使用文字編輯器開啟。 - 與 Linux 一樣,搜尋「temporary password」。
注意事項
- 如果初始密碼未顯示在日誌檔案中,請參閱後述的疑難排解。
4. 初始密碼的變更方法
如果以初始設定使用 MySQL,安全性上的風險會升高。因此,建議在安裝直後變更初始密碼。以下說明具體的變更手順。
mysql_secure_installation
指令的使用變更手順
mysql_secure_installation
是用來簡單進行 MySQL 初始設定的命令列工具。使用此工具,可以一括進行包含初始密碼變更在內的安全性強化。
- 開啟終端機或命令提示字元,並執行下列指令。
sudo mysql_secure_installation
- 會要求輸入初始密碼。請輸入安裝時確認的密碼。
- 會顯示設定密碼原則的選項。請選擇適當的強度(例如:建議強密碼)。
- 輸入新密碼,並為了確認而再次輸入。
- 其他安全性設定(匿名使用者的刪除或遠端 root 登入的無效化)也請依指示進行設定。
手動的密碼變更手順
也可以使用命令列直接以 SQL 變更密碼的方法。
- 登入 MySQL。
mysql -u root -p
- 執行密碼變更的 SQL 指令。
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';
※請在 新密碼
中指定安全性高的密碼。
- 為了反映設定,請執行下列。
FLUSH PRIVILEGES;
- 結束 MySQL。
exit
密碼原則與強度的設定
在 MySQL 中,有時預設會啟用密碼原則。此原則為了提升安全性,會拒絕強度低的密碼。
- 為了確認目前的原則,請執行下列。
SHOW VARIABLES LIKE 'validate_password%';
- 如果要緩和原則,請變更下列設定。
SET GLOBAL validate_password.policy=LOW;
注意事項
- 密碼變更後,有時無法存取 MySQL。此時請確認設定檔案或連線設定。
- 選擇強度高的密碼,可以減輕不正存取的風險。
5. 無法確認初始密碼的處理方法
MySQL 的初始密碼無法確認時,可能是在日誌檔案的設定或程序上有問題。本節將說明問題的原因及具體的解決方案。
初始密碼未輸出至日誌的情況
MySQL 5.7 以降,初始密碼會輸出至日誌檔案,但視設定或環境而定,有時不會輸出。應確認的要點
- 日誌檔案的位置:
MySQL 的日誌檔案預設路徑如下。
- Linux:
/var/log/mysqld.log
- Windows:
C:ProgramDataMySQLMySQL Server X.Xmysqld.log
請確認設定檔案(my.cnf
或my.ini
),確認日誌的輸出目的地是否未變更。
- 日誌等級的設定:
MySQL 的日誌等級若未適當設定,初始密碼可能不會被記錄。請編輯my.cnf
檔案,新增或確認以下設定。
[mysqld]
log_error=/var/log/mysqld.log
初始密碼不明時的重設方法
如果日誌中未輸出密碼,或遺失初始密碼時,可依以下步驟重設密碼。步驟:
- 以安全模式啟動 MySQL:
在安全模式下,可略過認證存取 MySQL。
sudo systemctl stop mysqld
sudo mysqld_safe --skip-grant-tables &
- 登入 MySQL:
無需認證即可存取 MySQL。
mysql -u root
- 重設密碼:
執行密碼重設的 SQL 指令。
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';
※新密碼
請設定強力的密碼。
- 套用設定:
FLUSH PRIVILEGES;
- 重新啟動 MySQL:
結束安全模式,以一般模式重新啟動。
sudo systemctl restart mysqld
問題無法解決時
如果上述步驟無法解決,請考慮以下方法。
- 重新安裝 MySQL:
若資料庫未使用,可重新安裝 MySQL 以回復初始狀態。 - 詢問官方文件或支援:
若有特定錯誤訊息輸出,請參考 MySQL 的官方文件或論壇。

6. FAQ
關於 MySQL 的初始密碼,我們彙整了讀者經常提出的問題及其解答。請參考本節,快速解決您的疑問或問題。
Q1: 如果忘記了初始密碼,該怎麼辦?
如果忘記了初始密碼,可以透過以下步驟重設。
- 停止 MySQL。
sudo systemctl stop mysqld
- 以安全模式啟動 MySQL。
sudo mysqld_safe --skip-grant-tables &
- 登入 MySQL 並設定新密碼。
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';
FLUSH PRIVILEGES;
- 重新啟動 MySQL 以回到正常模式。
sudo systemctl restart mysqld
Q2: 變更初始密碼後,有什麼方法可以確認?
要確認變更後的密碼是否正確,請執行以下步驟。
- 登入 MySQL。
mysql -u root -p
- 輸入密碼並成功登入,即表示設定成功。
- 為求謹慎,請使用以下 SQL 指令確認認證資訊。
SELECT user, host, authentication_string FROM mysql.user;
Q3: 請教如何變更密碼政策。
MySQL 的預設設定會強制執行密碼政策,但也可以放寬要求。
- 確認目前的密碼政策。
SHOW VARIABLES LIKE 'validate_password%';
- 要變更政策,請執行以下指令。
SET GLOBAL validate_password.policy = LOW;
- 視需要,也可以變更最小字元數或複雜度設定。
SET GLOBAL validate_password.length = 8;
Q4: 找不到記錄初始密碼的記錄檔,該怎麼辦?
如果找不到記錄檔,請試試以下方法。
- 確認設定檔案(
my.cnf
或my.ini
),特定log_error
的路徑。 - 如果設定有誤,請明確設定記錄檔的輸出位置。
[mysqld]
log_error=/var/log/mysqld.log
- 重新啟動 MySQL 以套用變更。
Q5: 如果 MySQL 沒有初始密碼,會怎麼樣?
視版本而定,有時初始密碼可能是空的(未設定)。這種情況下,請透過以下步驟設定新密碼。
- 登入 MySQL。
mysql -u root
- 設定密碼。
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';
7. 總結
MySQL 的初始密碼在安全管理資料庫方面是非常重要的要素。本篇文章詳細說明了初始密碼的確認方法、變更方法,以及疑難排解。以下彙整重要的重點。
文章要點
- 初始密碼的重要性: 出於安全性考量,建議在安裝後立即確認並變更。
- 確認方法: 透過參照日誌檔案(
mysqld.log
),可以輕鬆確認。 - 變更方法: 可以使用
mysql_secure_installation
工具或直接使用 SQL 來變更初始密碼。 - 疑難排解: 如果無法確認初始密碼,可以透過日誌設定或安全模式的利用來重置。
- FAQ: 透過回答有關密碼的常見問題,支援讀者解決疑問。
給讀者的訊息
在使用 MySQL 時,為了將安全風險降到最低,徹底管理初始密碼是非常重要的。此外,定期變更密碼並遵守安全政策,即可實現安全且高效的資料庫運作。
下一步
參考本篇文章,檢視 MySQL 的初始設定,並實施必要的安全措施。如果發生問題,請參考文章的疑難排解或 FAQ 來應對。