在 CentOS 8 上手動安裝 MySQL 后,初始密碼的位置取決于安裝方式。以下是查找密碼的步驟:
1. 通過 yum/dnf
安裝的 MySQL 8.0
如果使用官方 RPM 源安裝,初始密碼會在安裝時自動生成并記錄在日志中:
# 查看 MySQL 初始密碼
sudo grep 'temporary password' /var/log/mysqld.log
輸出類似:
[Note] A temporary password is generated for root@localhost: AbcDeFg123!
密碼:AbcDeFg123!
(示例,實際以你的輸出為準)
2. 手動初始化的 MySQL(mysqld --initialize
)
如果你手動執行了 mysqld --initialize
,密碼會生成在當前目錄下的日志中:
# 查找包含臨時密碼的日志文件(根據初始化時的路徑)
sudo grep 'temporary password' /var/log/mysqld.log # 默認路徑
# 或
sudo grep 'temporary password' /path/to/your/log/file.log # 自定義路徑
3. 無密碼初始化(不安全,不推薦)
如果在初始化時使用了 --skip-grant-tables
參數,MySQL 會無密碼啟動。這種情況下,需要重置 root 密碼:
# 1. 停止 MySQL 服務
sudo systemctl stop mysqld# 2. 以跳過權限驗證的方式啟動
sudo mysqld_safe --skip-grant-tables &# 3. 無密碼登錄
mysql -u root# 4. 在 MySQL 命令行中重置密碼
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword123!';
FLUSH PRIVILEGES;
EXIT;# 5. 停止 MySQL 服務
sudo pkill mysqld# 6. 正常啟動 MySQL
sudo systemctl start mysqld
4. 忘記密碼后的重置方法
如果忘記了密碼,可以通過以下步驟重置:
# 1. 停止 MySQL 服務
sudo systemctl stop mysqld# 2. 創建臨時配置文件
echo "skip-grant-tables" | sudo tee -a /etc/my.cnf# 3. 啟動 MySQL
sudo systemctl start mysqld# 4. 無密碼登錄并重置密碼
mysql -u root
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword123!';
FLUSH PRIVILEGES;
EXIT;# 5. 停止 MySQL,移除臨時配置
sudo systemctl stop mysqld
sudo sed -i '/skip-grant-tables/d' /etc/my.cnf# 6. 正常啟動 MySQL
sudo systemctl start mysqld
5. 驗證密碼是否生效
mysql -u root -p
# 輸入新密碼后能登錄即成功
密碼安全建議
- 密碼必須包含大小寫字母、數字和特殊字符,長度至少 8 位。
- 生產環境建議使用
mysql_secure_installation
命令進一步加固安全:sudo mysql_secure_installation
注意事項
- 版本差異:MySQL 5.7 和 8.0 的密碼策略不同,8.0 要求更嚴格的密碼復雜度。
- 日志位置:如果自定義了數據目錄,日志路徑可能不同,需通過
my.cnf
配置文件查找。