為了安全與穩定,MySQL 服務不應以 root 身分運行。建立專屬帳號 (如 mysqladm/mysqlgrp) 並統一所有啟動方式使用此身分,避免資料目錄權限混亂導致服務無法存取檔案。
mysql 帳號。chown -R mysqladm:mysqlgrp /usr/local/varchmod -R go-rwx /usr/local/varmysqld --user=mysqladm (systemd/RPM 腳本已內建)。| 方式 | 指令/腳本 | 特點 | 適用系統 |
|---|---|---|---|
| 直接呼叫 | mysqld [options] | 手動測試、除錯;無監控自動重啟 | 所有 |
| 安全啟動腳本 | safe_mysqld [options] | 自動偵測路徑、重導 stderr 至錯誤日誌、進程守護自動重啟 | BSD 風格 (FreeBSD, macOS 等) |
| System V 服務腳本 | mysql.server start|stop | 整合 rc.d/run-level 機制,支援 service/chkconfig 管理 | System V 風格 (RedHat, CentOS, Solaris 等) |
safe_mysqld:安裝目錄 bin/ 或原始碼 scripts/。mysql.server:安裝目錄 share/mysql/ 或原始碼 support-files/。BSD (rc.local):
if [ -x /usr/local/bin/safe_mysqld ]; then
/usr/local/bin/safe_mysqld &
fi
System V (Linux PPC):
cp mysql.server /etc/rc.d/init.d/
chmod 500 /etc/rc.d/init.d/mysql.server
ln -s /etc/rc.d/init.d/mysql.server /etc/rc.d/rc3.d/S99mysql
Solaris: 目錄為 /etc/init.d 與 /etc/rc2.d。
亦可用 chkconfig --add mysql.server 自動管理。
/etc/my.cnf (Linux) 或 C:\my.cnf (Windows) 的 [mysqld] 區段,避免修改啟動腳本導致升級遺失設定。TZ 必須在腳本中 export (如 TZ=US/Central),因無法透過選項檔傳遞。在啟動腳本中加入 myisamchk/isamchk 掃描資料表完整性,可在崩潰重啟時提早發現損壞。
mysqladmin shutdown (需有效連線)。mysql.server stop (傳遞 stop 參數給腳本)。TERM 訊號,mysqld 會正常關閉 (刷新日誌、釋放鎖);若無回應才用 kill -9 (風險:資料不一致,需事後 myisamchk 檢查)。mysqladmin -h 主機名 -u root -p shutdownmy.cnf 指定固定 Socket 路徑 (如 /var/lib/mysql/mysql.sock) 並重啟。/tmp sticky bit:chmod +t /tmp。kill `cat /datadir/hostname.pid` (勿用 -9)。mysqld --skip-grant-tables &。mysql -u root mysqlUPDATE user SET password=PASSWORD('新密碼') WHERE user='root'; FLUSH PRIVILEGES;| 參數 | 說明 |
|---|---|
| 安裝目錄 (--prefix) | 不同版本必須分目錄;源碼編譯用 ./configure --prefix=/usr/local/mysql-5.0 |
| 資料目錄 (datadir) | 各實例獨立資料目錄 |
| TCP/IP 埠號 (--port) | 預設 3306,需錯開 |
| Unix Socket (--socket) | 預設 /tmp/mysql.sock,需錯開 |
| 執行身分 (--user) | 建議各實例用獨立帳號 |
| 選項檔 (--defaults-file) | 各實例專屬 my.cnf |
--prefix、--with-tcp-port、--with-unix-socket 完全分離。--defaults-file=/etc/my.cnf.instance1 指定專屬配置檔 (含 datadir, port, socket, pid-file, user 等)。/etc/my.cnf 放共用設定;實例專屬設定放 DATADIR/my.cnf 或用 --defaults-file 指定 (此模式會忽略標準位置選項檔)。啟動腳本建議: 研讀 safe_mysqld 邏輯,撰寫客製化啟動腳本精確控制各實例參數,避免衝突。