MySQL 服務的啟動、關閉與自動啟動配置是 DBA 日常運維的基礎功課。不同作業系統、安裝方式(二進制、RPM、原始碼)皆有差異。本文系統整理 Unix/Linux 與 Windows 平台的各類啟停方法、腳本位置、權限控制、選項檔配置與自動啟動設定,並說明 mysqladmin 管理工具的實戰用法。
# 前台執行(除錯用)
/usr/local/mysql/bin/mysqld --user=mysql
# 背景執行
/usr/local/mysql/bin/mysqld --user=mysql &
適用場景:臨時測試、容器環境、無 service 管理的極簡部署。
優勢:
basedir/datadirdatadir/hostname.err--user 指定運行用戶# 前台
/usr/local/mysql/bin/mysqld_safe --user=mysql --datadir=/data/mysql &
# 非標準安裝路徑
/usr/local/mysql/bin/mysqld_safe --basedir=/opt/mysql --datadir=/data/mysql --user=mysql &
腳本位置:
support-files/mysql.server/etc/init.d/mysqld(已改名)# 複製到啟動目錄
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
# 啟停操作
service mysqld start
service mysqld stop
service mysqld restart
service mysqld status
# SysVinit (CentOS 6, Ubuntu 14)
chkconfig --add mysqld
chkconfig mysqld on
# systemd (CentOS 7+, Ubuntu 16+)
systemctl enable mysqld
systemctl start mysqld
# 手動建立 rc.d 連結(BSD 風格)
ln -s /etc/init.d/mysqld /etc/rc.d/rc3.d/S99mysqld
[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
port=3306
user=mysql
[mysql.server]
user=mysql
basedir=/usr/local/mysql
mysql.server 會讀取 [mysql.server] 區段的 user、basedir、datadir、pid-file 等參數。
C:\mysql\bin\mysqld --standalone
C:\mysql\bin\mysqld-nt --standalone # 支援命名管道
# 安裝服務(預設服務名 MySQL)
C:\mysql\bin\mysqld-nt --install
# 指定服務名
C:\mysql\bin\mysqld-nt --install MySQL57
# 非預設路徑需建立 C:\my.cnf
[mysqld]
basedir = D:/mysql
datadir = D:/mysql/data
NET START MySQL
NET STOP MySQL
SC DELETE MySQL # 移除服務
注意:作為服務運行時,無法在命令列傳遞參數,必須透過 my.cnf(Windows 下通常命名 my.ini)配置。
適用所有平台、所有安裝方式,無需 root 系統權限,僅需 MySQL 權限。
# 關閉服務
mysqladmin -u root -p shutdown
# 重新載入權限/配置
mysqladmin -u root -p reload
# 刷新日誌/快取/表
mysqladmin -u root -p flush-logs
mysqladmin -u root -p flush-tables
mysqladmin -u root -p flush-privileges
# 檢查版本/狀態/進程
mysqladmin -u root -p version
mysqladmin -u root -p status
mysqladmin -u root -p processlist
# 取得完整幫助
mysqladmin --help
| 現象 | 原因 | 解決 |
|---|---|---|
| Access denied for user 'root@localhost' | 密碼錯誤或無權限 | 加 -u root -p 指定用戶密碼 |
| safe_mysqld 權限被拒絕 | 錯誤日誌屬主為 root,後以非 root 啟動 | 刪除舊錯誤日誌 rm /data/mysql/hostname.err |
| 非標準路徑啟動失敗 | 找不到 basedir/datadir | 加 --basedir/--datadir 或配置 my.cnf |
| Windows 服務啟動失敗 | my.ini 路徑或 basedir 錯誤 | 檢查 C:\my.ini 或安裝目錄 my.ini |
mysqladmin shutdown:正常關閉、刷新緩衝池、關閉檔案kill -9:導致 InnoDB 崩潰恢復、資料損壞風險FLUSH TABLES WITH READ LOCK 確保一致性備份SHOW GLOBAL STATUS LIKE 'Uptime' 確認服務健康