首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 入門

MySQL 管理完全指南:服務啟停、用戶權限、配置文件、核心管理命令與圖解

     編輯:MySQL 入門

MySQL 管理完全指南:服務啟停、用戶權限、配置文件、核心管理命令與圖解

MySQL 管理涵蓋服務生命週期、用戶權限體系、配置調優、日常巡檢命令。掌握這些核心技能,是 DBA 與運維開發的必修課。本文系統講解啟停服務、用戶創建授權、my.cnf 關鍵配置、五大核心管理命令,並輔以圖解演示。

一、服務啟動與關閉

檢查服務狀態

ps -ef | grep mysqld
  • 有輸出 → 服務運行中;無輸出 → 已停止。

啟動服務

cd /usr/bin
./mysqld_safe &
  • mysqld_safe:啟動腳本,監控進程崩潰自動重啟,生產環境推薦。
  • systemd 系統:systemctl start mysqld / systemctl start mysql。

關閉服務

cd /usr/bin
./mysqladmin -u root -p shutdown
Enter password: ******
  • 優雅關閉:完成檢查點、刷新緩衝池、關閉表、釋放鎖。
  • systemd:systemctl stop mysqld。
  • 避免 kill -9:導致崩潰恢復、資料損壞風險。

二、用戶創建與權限體系

方法 1:INSERT INTO mysql.user(底層、不推薦常規使用)

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; -- 關鍵:重載授權表,否則新用戶無法登入
  • 5.7+ password 欄位改為 authentication_string。
  • 必須 FLUSH PRIVILEGES,否需重啟服務生效。

方法 2:CREATE USER + GRANT(標準、推薦)

-- 建立用戶
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';

三、/etc/my.cnf 關鍵配置

[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

SHOW TABLE STATUS 輸出關鍵欄位解讀

  • Rows:預估行數(InnoDB 非精確)。
  • Data_length:資料大小(Bytes)。
  • Index_length:索引大小。
  • Auto_increment:下一自增值。
  • Data_free:碎片空間,大於 100MB 考慮 OPTIMIZE TABLE。
  • Create_time / Update_time / Check_time。

五、圖解演示

MySQL 管理命令演示動畫

六、日常巡檢清單

  1. 錯誤日誌:tail -f /var/log/mysqld.log 關注 ERROR、WARN、Aborted connection。
  2. 慢查詢日誌:long_query_time=1、slow_query_log=ON,定期 pt-query-digest 分析。
  3. 監控指標:QPS、TPS、連線數、緩衝池命中率、主從延遲、磁碟 IOPS、CPU/記憶體。
  4. 備份驗證:每日全量+增量,每週隨機還原驗證。
  5. 碎片整理:Data_free 大時 OPTIMIZE TABLE 或 ALTER TABLE ... ENGINE=InnoDB。

七、安全加固基線

  1. root 只允許本地登入:CREATE USER 'root'@'localhost' ...,刪除 'root'@'%'。
  2. 強密碼策略:validate_password 插件、長度≥32、複雜度高。
  3. 最小權限帳號:應用帳號無 DDL、無 GRANT、無 FILE、無 SHUTDOWN。
  4. SSL 強制:REQUIRE SSL、ssl_ca/cert/key 配置。
  5. 審計日誌:audit_log 插件記錄所有查詢/登入/錯誤。

MySQL 管理不是被動救火,而是主動建立「啟停規範、權限最小化、配置版本化、巡檢常態化、備份可驗證、安全基線化」的體系。將上述清單內化為運維 SOP、納入自動化腳本、配置監控告警,讓資料庫在可控軌道上穩健運行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved