程式分類總覽
MySQL 發布版包含三大類程式,依功能與通信方式區分:
1. 伺服器端與啟動腳本
| 程式 | 功能 |
mysqld | 核心伺服器守護進程 |
mysqld_safe | 監護啟動腳本(自動重啟、日誌導向、core dump 處理) |
mysql.server | SysV 風格服務腳本(start|stop|restart|status) |
mysqld_multi | 多實例管理腳本 |
mysql_install_db | 初始化資料目錄與系統表(5.7+ 改為 mysqld --initialize) |
2. 客戶端程式(與伺服器通信)
| 程式 | 用途 | 典型場景 |
mysql | 互動式/批次 SQL 客戶端 | 日常管理、腳本執行、管道導入 |
mysqladmin | 管理操作 | 建庫、關機、刷新權限、狀態檢視、修改密碼 |
mysqlcheck | 表維護 | 檢查、修復、分析、優化表 |
mysqldump | 邏輯備份 | 結構+資料導出、遷移、跨版本升級 |
mysqlhotcopy | 熱備份(MyISAM/ISAM) | 檔案層級快速複製(已棄用,改用 xtrabackup) |
mysqlimport | 資料導入 | LOAD DATA INFILE 封裝,支援管道 |
mysqlshow | 結構瀏覽 | 快速列出庫、表、欄位、索引 |
mysqlbinlog | Binlog 解析 | 時間點恢復、SQL 審計、異構同步 |
perror | 錯誤碼查詢 | perror 1062 → Duplicate entry |
3. 獨立工具(不連接伺服器)
| 程式 | 功能 |
myisamchk | 離線 MyISAM 表檢查/修復/分析/封裝 |
myisampack | 生成壓縮唯讀 MyISAM 表 |
mysqlbinlog | 亦可離線解析 binlog 檔案 |
perror | 系統/ MySQL 錯誤碼說明 |
replace | 字串替換工具(檔案或 stdin) |
GUI 管理工具(官方歷史套件)
- MySQL Administrator:伺服器管理、使用者、備份、健康監控
- MySQL Query Browser:視覺化查詢編輯、EXPLAIN 圖形化、書籤管理
- MySQL Migration Toolkit:異構資料庫遷移(Oracle、SQL Server、Sybase → MySQL)
※ 以上 GUI 工具已整合至 MySQL Workbench(現代統一 IDE),建議直接使用 Workbench 6.3+ 或 8.0 版本。
程式調用與選項機制
命令列語法
program_name [options] [non-option arguments]
# 選項形式:--long-name 或 -s (短選項)
# 非選項參數:不以 - 開頭,如 mysql 視第一個非選項參數為資料庫名
三種選項來源與優先序(低→高)
- 環境變數:如
MYSQL_PWD、MYSQL_TCP_PORT、MYSQL_UNIX_PORT
- 選項檔:
/etc/my.cnf、/etc/mysql/my.cnf、~/.my.cnf、./.my.cnf(依序讀取,後者覆蓋前者)
- 命令列:最高優先級,覆蓋前兩者
選項檔結構範例
[client]
port=3306
socket=/tmp/mysql.sock
default-character-set=utf8mb4
[mysql]
prompt="(\u@\h) [\d]> "
auto-rehash
[mysqld]
user=mysql
datadir=/data/mysql
innodb_buffer_pool_size=2G
max_connections=1000
[mysqldump]
quick
max_allowed_packet=64M
常用通用選項
| 選項 | 短選項 | 說明 |
--help | -? | 顯示幫助並退出 |
--host=name | -h | 伺服器主機名/IP |
--user=name | -u | 登入用戶 |
--password[=pass] | -p | 密碼(不建議明文寫在命令列) |
--port=num | -P | TCP 端口 |
--socket=path | -S | Unix socket 路徑 |
--protocol=name | | tcp/socket/pipe/memory |
--compress | -C | 啟用壓縮協議 |
設定程式變數
部分選項可透過 --var_name=value 設定內部變數(如 --max_allowed_packet=32M),等同於在選項檔中設定 max_allowed_packet=32M。
實用技巧
- 密碼安全:避免
-ppassword 明文,改用 -p 互動輸入、--defaults-extra-file 指定含密碼的獨立 cnf(chmod 600)、或 mysql_config_editor 加密儲存(login-path)
- 批次模式:
mysql -u root -p db_name < script.sql、mysql --batch --silent -e "SELECT 1"(適合腳本捕獲輸出)
- 除錯:
mysql --debug=d:t:O,/tmp/mysql.trace 產生追蹤日誌
- 版本檢查:
mysqladmin version、mysql -V