萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 啟動與關閉完全指南:多平台、多方式、自動啟動與管理工具

MySQL 服務的啟動、關閉與自動啟動配置是 DBA 日常運維的基礎功課。不同作業系統、安裝方式(二進制、RPM、原始碼)皆有差異。本文系統整理 Unix/Linux 與 Windows 平台的各類啟停方法、腳本位置、權限控制、選項檔配置與自動啟動設定,並說明 mysqladmin 管理工具的實戰用法。

Unix/Linux 平台啟動方式

1. 直接啟動 mysqld 守護進程

# 前台執行(除錯用)
/usr/local/mysql/bin/mysqld --user=mysql

# 背景執行
/usr/local/mysql/bin/mysqld --user=mysql &

適用場景:臨時測試、容器環境、無 service 管理的極簡部署。

2. 使用 mysqld_safe 腳本(推薦生產環境)

優勢:

  • 自動偵測 basedir/datadir
  • 錯誤日誌導向 datadir/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 &

3. 使用 mysql.server 系統服務腳本(標準部署)

腳本位置:

  • 原始碼安裝:support-files/mysql.server
  • RPM 安裝:/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

4. 配置自動啟動

# 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

5. 透過 my.cnf 選項檔傳遞參數

[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 等參數。

Windows 平台啟動方式

1. 命令列直接啟動

C:\mysql\bin\mysqld --standalone
C:\mysql\bin\mysqld-nt --standalone  # 支援命名管道

2. 安裝為 Windows 服務(推薦生產)

# 安裝服務(預設服務名 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

3. 服務管理

NET START MySQL
NET STOP MySQL
SC DELETE MySQL  # 移除服務

注意:作為服務運行時,無法在命令列傳遞參數,必須透過 my.cnf(Windows 下通常命名 my.ini)配置。

使用 mysqladmin 管理工具

適用所有平台、所有安裝方式,無需 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

關機/重啟最佳實踐

  1. 優先使用 mysqladmin shutdown:正常關閉、刷新緩衝池、關閉檔案
  2. 避免 kill -9:導致 InnoDB 崩潰恢復、資料損壞風險
  3. 維護窗口前執行 FLUSH TABLES WITH READ LOCK 確保一致性備份
  4. 重啟後驗證 SHOW GLOBAL STATUS LIKE 'Uptime' 確認服務健康
copyright © 萬盛學電腦網 all rights reserved