mysql 用戶/組/var/lib/mysql 數據目錄、/var/log/mysqld.log 日誌/etc/my.cnf 默認配置/usr/lib/systemd/system/mysqld.service# 5.7/8.0 生成臨時 root 密碼
mysqld --initialize --user=mysql --datadir=/var/lib/mysql
# 輸出:[Note] A temporary password is generated for root@localhost: XxXxXxXx
# 或 5.6/不需臨時密碼
mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql
注意: 初始化只能在**空數據目錄**執行,否則報錯 File ./ibdata1 already exists。
systemctl start mysqld
# 或傳統
service mysqld start
mysql -u root -p'XxXxXxXx' # 使用初始化生成的臨時密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass#2024';
-- 或 5.6
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewStrongPass#2024');
systemctl enable mysqld
# 或
chkconfig mysqld on
/usr/lib/systemd/system/mysqld.service[Unit]
Description=MySQL Server
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=notify
# 執行前預檢
ExecStartPre=/usr/bin/mysqld_pre_systemd
# 主進程
ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS
# 重啟策略
Restart=on-failure
RestartSec=5
# 限制
LimitNOFILE=65535
LimitNPROC=65535
Type=notify:mysqld 啟動完成發送 `sd_notify` 給 systemd,systemd 才認為啟動成功mysqld_pre_systemd:檢查數據目錄權限、socket 文件殘留、配置語法Restart=on-failure:異常退出自動重啟 (5 秒延遲)Can't connect to local MySQL server through socket '/tmp/mysql.sock'ls -l /var/lib/mysql/mysql.sock、grep socket /etc/my.cnf、mysql --socket=/var/lib/mysql/mysql.sock--protocol=tcp -h 127.0.0.1MySQL Daemon failed to start / Job for mysqld.service failedjournalctl -u mysqld -xe、tail -f /var/log/mysqld.logmysqld --validate-config 或 mysqld --help --verbose 檢查chown -R mysql:mysql /var/lib/mysql、restorecon -Rv /var/lib/mysql (SELinux)netstat -tlnp | grep 3306、lsof -i:3306innodb_buffer_pool_size 過大、OOM Killer 殺進程 (dmesg | grep -i kill)plugin-load-add 載入失敗systemctl stop mysqld
mysqld_safe --skip-grant-tables --skip-networking &
# 新終端
mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass';
systemctl restart mysqld
| 項目 | yum/rpm | 二進制包 | 源碼編譯 |
|---|---|---|---|
| 服務管理 | systemd (mysqld.service) | 手動建 systemd / mysqld_safe | 同二進制 |
| 默認配置 | /etc/my.cnf | 需手動建 my.cnf | 需手動建 |
| 數據目錄 | /var/lib/mysql | my.cnf 指定 | CMAKE_INSTALL_PREFIX/data |
| 初始化 | 手動執行 | 手動執行 | 手動執行 |
| 日誌輪轉 | logrotate 含包 | 手動配置 | 手動配置 |
innodb_buffer_pool_dump_at_shutdown=ON, innodb_buffer_pool_load_at_startup=ON (5.6+)innodb_read_io_threads, innodb_write_io_threads、innodb_purge_threadsinnodb_log_file_size (1~4GB)、innodb_flush_log_at_trx_commit=2 (非核心業務)SELECT 1 或 mysqladmin pingMySQL 啟動看似簡單,實則涉及 **systemd 服務管理 → 數據目錄初始化 → 權限/SELinux/端口/記憶體/配置語法** 多重檢查。yum 安裝後**必須手動初始化**是 5.7+ 最大變化。掌握 journalctl -u mysqld、mysqld --validate-config、mysqld_safe --skip-grant-tables 三大排查利器,配合預熱、健康檢查、依賴順序優化,即可實現「秒級啟動、零人工干預、故障自愈」的生產級運維標準。