MySQL 管理涵蓋服務生命週期、用戶權限體系、配置調優、日常巡檢命令。掌握這些核心技能,是 DBA 與運維開發的必修課。本文系統講解啟停服務、用戶創建授權、my.cnf 關鍵配置、五大核心管理命令,並輔以圖解演示。
ps -ef | grep mysqld
cd /usr/bin ./mysqld_safe &
mysqld_safe:啟動腳本,監控進程崩潰自動重啟,生產環境推薦。systemctl start mysqld / systemctl start mysql。cd /usr/bin ./mysqladmin -u root -p shutdown Enter password: ******
systemctl stop mysqld。mysql> USE mysql;
mysql> INSERT INTO user (host, user, authentication_string, select_priv, insert_priv, update_priv)
-> VALUES ('localhost', 'guest', PASSWORD('guest123'), 'Y', 'Y', 'Y');
mysql> FLUSH PRIVILEGES; -- 關鍵:重載授權表,否則新用戶無法登入
password 欄位改為 authentication_string。-- 建立用戶 CREATE USER 'zara'@'localhost' IDENTIFIED BY 'zara123'; -- 授權:指定庫、表、權限 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON TUTORIALS.* TO 'zara'@'localhost'; -- 刷新權限(GRANT 隱式刷新,但習慣顯式執行) FLUSH PRIVILEGES;
| 權限 | 說明 |
|---|---|
| SELECT | 查詢 |
| INSERT | 插入 |
| UPDATE | 更新 |
| DELETE | 刪除 |
| CREATE | 建表/建庫 |
| DROP | 刪表/刪庫 |
| INDEX | 建/刪索引 |
| ALTER | 修改表結構 |
| GRANT OPTION | 授權給他人 |
| ALL PRIVILEGES | 全部權限(除 GRANT OPTION) |
SHOW GRANTS FOR 'zara'@'localhost';
REVOKE INSERT, UPDATE ON TUTORIALS.* FROM 'zara'@'localhost';
DROP USER 'zara'@'localhost';
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid # 核心效能參數(示例值,需按實際硬體調優) innodb_buffer_pool_size=4G -- 專用機 60-70% 記憶體 innodb_log_file_size=512M innodb_flush_log_at_trx_commit=1 -- ACID,極高寫入可放寬 2 sync_binlog=1 -- Binlog 同步,防丟失 max_connections=1000 thread_cache_size=100 table_open_cache=4000 tmp_table_size=64M max_heap_table_size=64M character-set-server=utf8mb4 collation-server=utf8mb4_0900_ai_ci default_authentication_plugin=mysql_native_password [mysql] default-character-set=utf8mb4 [client] default-character-set=utf8mb4
SET GLOBAL)。| 命令 | 用途 | 範例 |
|---|---|---|
USE db_name | 切換預設資料庫 | USE RUNOOB; |
SHOW DATABASES | 列出所有資料庫 | SHOW DATABASES; |
SHOW TABLES | 列出當前庫所有表 | USE RUNOOB; SHOW TABLES; |
SHOW COLUMNS FROM tbl | 顯示表結構(欄位、類型、鍵、預設、註釋) | SHOW COLUMNS FROM runoob_tbl; |
SHOW INDEX FROM tbl | 顯示索引詳情(主鍵、唯一、普通、基數、類型) | SHOW INDEX FROM runoob_tbl; |
SHOW TABLE STATUS [FROM db] [LIKE 'pat']\G | 表統計:行數、大小、自增值、碎片、編碼、校對、註釋 | SHOW TABLE STATUS FROM RUNOOB LIKE 'runoob%'\G |
Rows:預估行數(InnoDB 非精確)。Data_length:資料大小(Bytes)。Index_length:索引大小。Auto_increment:下一自增值。Data_free:碎片空間,大於 100MB 考慮 OPTIMIZE TABLE。Create_time / Update_time / Check_time。
tail -f /var/log/mysqld.log 關注 ERROR、WARN、Aborted connection。long_query_time=1、slow_query_log=ON,定期 pt-query-digest 分析。Data_free 大時 OPTIMIZE TABLE 或 ALTER TABLE ... ENGINE=InnoDB。CREATE USER 'root'@'localhost' ...,刪除 'root'@'%'。validate_password 插件、長度≥32、複雜度高。REQUIRE SSL、ssl_ca/cert/key 配置。audit_log 插件記錄所有查詢/登入/錯誤。MySQL 管理不是被動救火,而是主動建立「啟停規範、權限最小化、配置版本化、巡檢常態化、備份可驗證、安全基線化」的體系。將上述清單內化為運維 SOP、納入自動化腳本、配置監控告警,讓資料庫在可控軌道上穩健運行。