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

MySQL 常用命令大全:資料庫/表操作、權限管理、啟停服務與安全加固

     編輯:MySQL 綜合教學

MySQL 常用命令大全

從零開始構建 MySQL 管理知識庫,涵蓋資料庫/表 DDL、資料 DML、權限體系、服務啟停、安全基線與監控腳本,適合 DBA 速查與開發入門。

一、資料庫與資料表核心操作

操作命令說明
查看所有資料庫SHOW DATABASES;
建立資料庫CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;建議顯式指定字元集
切換資料庫USE db_name;提示 Database changed 表示成功
查看當前庫所有表SHOW TABLES;
建立資料表CREATE TABLE t (id INT PRIMARY KEY, name VARCHAR(20)) ENGINE=InnoDB;
查看表結構DESC t; 或 SHOW COLUMNS FROM t;
插入資料INSERT INTO t VALUES (1, 'hyq');
從文字檔匯入LOAD DATA LOCAL INFILE '/path/file.txt' INTO TABLE t;需啟用 local_infile=1
匯入 SQL 檔SOURCE /path/script.sql;在 mysql client 內執行
刪除表DROP TABLE t;結構與資料全刪
清空表TRUNCATE TABLE t;保留結構,重置自增 ID,速度快
更新資料UPDATE t SET sex='f' WHERE name='hyq';

二、服務啟停

OS啟動停止重啟狀態
Windows (服務)net start mysqlnet stop mysqlnet restart mysqlsc query mysql
Linux (Systemd)systemctl start mysqldsystemctl stop mysqldsystemctl restart mysqldsystemctl status mysqld
Linux (SysV)/etc/init.d/mysqld start/etc/init.d/mysqld stop/etc/init.d/mysqld restart/etc/init.d/mysqld status

注意:啟停需管理員/root 權限。

三、安全基線:安裝後必做三件事

  1. 刪除匿名帳號:
    USE mysql;
    DELETE FROM user WHERE User = '';
  2. 設定 root 密碼:
    UPDATE user SET authentication_string=PASSWORD('StrongP@ssw0rd') WHERE User='root';
    FLUSH PRIVILEGES;
  3. 限制 root 登入來源(可選):
    UPDATE user SET Host='127.0.0.1' WHERE User='root' AND Host='%';
    FLUSH PRIVILEGES;

登入驗證:

mysql -uroot -p                # 互動式輸入密碼
mysql -uroot -p'StrongP@ssw0rd' # 直接帶密碼(注意無空格)
mysql -h 10.0.0.1 -uroot -p db_name

四、權限管理:GRANT / REVOKE 實戰

核心權限分類

類別權限說明
全域管理FILE讀寫伺服器檔案
PROCESS查看/殺死其他使用者執行緒
RELOAD重載授權表、刷新日誌
SHUTDOWN關閉 MySQL 服務
物件級ALTER修改表結構、索引
CREATE建立資料庫/表
DELETE刪除資料
DROP刪除表/資料庫
INDEX建立/刪除索引
INSERT新增資料
SELECT查詢資料
UPDATE修改資料
特殊ALL所有權限(等同 root)
USAGE僅允許登入,無任何操作權限

常用 GRANT 範例

-- 全庫全表所有權限
GRANT ALL ON mydb.* TO 'app_user'@'10.0.0.%' IDENTIFIED BY 'Pass123';

-- 僅讀權限
GRANT SELECT ON mydb.* TO 'readonly'@'%' IDENTIFIED BY 'Pass123';

-- 特定表寫入權限
GRANT INSERT, UPDATE ON mydb.orders TO 'writer'@'10.0.0.5' IDENTIFIED BY 'Pass123';

-- 特定表刪除權限
GRANT DELETE ON mydb.logs TO 'cleaner'@'10.0.0.10' IDENTIFIED BY 'Pass123';

-- 授予授權權限(慎用)
GRANT SELECT ON mydb.* TO 'admin'@'%' IDENTIFIED BY 'Pass123' WITH GRANT OPTION;

回收權限

REVOKE DELETE ON mydb.logs FROM 'cleaner'@'10.0.0.10';
REVOKE ALL ON mydb.* FROM 'old_user'@'%';

五、使用者管理最佳實踐

  1. 業務專用帳號:每個應用/微服務獨立帳號,最小權限原則。
  2. 只讀/讀寫分離:報表/分析用只讀帳號,寫入用寫入帳號。
  3. 密碼複雜度:≥12 字元,含大小寫、數字、符號,定期輪換。
  4. 主機限制:'user'@'10.0.0.%' 限制來源網段,避免 'user'@'%'。
  5. 定期審計:SELECT User, Host FROM mysql.user; 清理殭屍帳號。

六、監控腳本:主從同步狀態巡檢

#!/bin/bash
# check_slave.sh
HOST="127.0.0.1"
USER="monitor"
PASS="monitor_pass"
IO_RUNNING=$(mysql -h$HOST -u$USER -p$PASS -e "SHOW SLAVE STATUS\G" | grep "Slave_IO_Running:" | awk '{print $2}')
SQL_RUNNING=$(mysql -h$HOST -u$USER -p$PASS -e "SHOW SLAVE STATUS\G" | grep "Slave_SQL_Running:" | awk '{print $2}')

if [[ "$IO_RUNNING" != "Yes" || "$SQL_RUNNING" != "Yes" ]]; then
    echo "[$(date)] Slave 异常: IO=$IO_RUNNING, SQL=$SQL_RUNNING" | mail -s "MySQL Slave Alert" dba@company.com
fi

加入 crontab 每分鐘執行:* * * * * /path/check_slave.sh

七、常用檔案位置速查

檔案典型路徑用途
配置檔/etc/my.cnf 或 /etc/mysql/my.cnf伺服器參數
資料目錄/var/lib/mysql資料庫檔案
錯誤日誌/var/log/mysqld.log 或 數據目錄下 *.err啟動錯誤、崩潰堆疊
慢查詢日誌配置 slow_query_log_file慢 SQL 分析
二進制日誌配置 log_bin主從同步、時間點恢復
PID 檔/var/run/mysqld/mysqld.pid進程 ID
Socket/var/run/mysqld/mysqld.sock本地連線

收藏此速查表,日常運維開發查詢不再東奔西走。建議結合 mysql --help、官方文檔與實際環境持續補充,打造屬於自己的 MySQL 知識庫。

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