首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 服務啟動、停止與多實例管理完全手冊

     編輯:MySQL 資料庫相關知識

核心原則:以非特權用戶運行

  • 建立專用 mysql 用戶/群組(RPM 安裝自動建立)
  • 資料目錄擁有者設為 mysql:mysql,權限 700
  • 啟動腳本加 --user=mysql 參數,即使 root 啟動也會切換身份

三種啟動方式

System V 啟動腳本安裝


cp mysql.server /etc/rc.d/init.d/mysqld
chmod 500 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

啟動參數配置

優先使用 /etc/my.cnf 全域選項檔:


[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
port=3306

環境變數(如時區)需修改 mysqld_safe:


TZ=Asia/Taipei
export TZ

啟動前檢查表


# 加入啟動腳本 mysqld_safe 前
myisamchk --silent --force --fast /var/lib/mysql/*/*.MYI
isamchk --silent --force --fast /var/lib/mysql/*/*.ISM

停止服務


# 手動
mysqladmin -u root -p shutdown

# System V
service mysqld stop
# 或
/etc/rc.d/init.d/mysqld stop

失去控制權的緊急恢復

  1. 找出 PID:ps aux | grep mysqld 或看 .pid 檔
  2. 優雅終止:kill -TERM
  3. 強制終止(最後手段):kill -9 → 後續必跑 myisamchk -r
  4. 跳過授權表啟動:mysqld --skip-grant-tables --user=mysql &
  5. 登入修改密碼:UPDATE mysql.user SET Password=PASSWORD('new') WHERE User='root'; FLUSH PRIVILEGES;
  6. 重啟正常服務

多實例運行架構

  • 不同版本:分目錄安裝,--prefix=/usr/local/mysql-
  • 同版本多實例:共用二進制,獨立 datadir、port、socket、pid-file、my.cnf

多實例 my.cnf 範例


# /etc/my.cnf 全域共用
[mysqld]
user=mysql

# /data/mysql3306/my.cnf
[mysqld]
datadir=/data/mysql3306
port=3306
socket=/data/mysql3306/mysql.sock
pid-file=/data/mysql3306/mysql.pid

# /data/mysql3307/my.cnf
[mysqld]
datadir=/data/mysql3307
port=3307
socket=/data/mysql3307/mysql.sock
pid-file=/data/mysql3307/mysql.pid

多實例啟動腳本


#!/bin/bash
# start_multi.sh
for cnf in /data/mysql*/my.cnf; do
    mysqld_safe --defaults-file=$cnf &
done

停止同理迴圈送 mysqladmin --defaults-file=$cnf shutdown。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
方式適用場景特點
直接呼叫 mysqld測試/除錯最原始,不推薦生產
mysqld_safeBSD 風格系統監控進程、自動重啟、錯誤日誌導向
mysql.server (System V)Linux/RedHat/CentOS標準服務管理、支援 start/stop、整合 chkconfig