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

MySQL 常用命令大全:從入門到運維實戰速查手冊

     編輯:MySQL 資料庫相關知識

基礎庫表操作

-- 創建/選擇/刪除數據庫
CREATE DATABASE db_name;
USE db_name;
DROP DATABASE db_name;              -- 無提示直接刪除
mysqladmin -u root -p DROP db_name  -- 有確認提示

-- 表結構查看
SHOW TABLES;
DESCRIBE table_name;                -- 等同 SHOW COLUMNS FROM table_name
SHOW CREATE TABLE table_name;       -- 查看建表語句含索引/引擎/字符集

版本與狀態信息

SELECT VERSION(), CURRENT_DATE;     -- 版本號+當前日期
SHOW VARIABLES LIKE '%version%';    -- 詳細版本變量
STATUS;                             -- \s 連接狀態摘要

用戶權限管理 (核心實戰)

創建用戶與授權

-- 通配符 % 表示任意主機,localhost 僅本地
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPass#2024';

-- 細粒度授權 (生產環境原則:最小權限)
GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.* TO 'app_user'@'%';
GRANT SELECT ON mysql.slow_log TO 'monitor'@'%';  -- 監控賬號

-- 超級管理員 (慎用)
GRANT ALL PRIVILEGES ON *.* TO 'dba'@'localhost' IDENTIFIED BY 'SuperPass#2024' WITH GRANT OPTION;
FLUSH PRIVILEGES;

權限回收與刪除


REVOKE ALL PRIVILEGES ON *.* FROM 'old_user'@'%';
DROP USER 'old_user'@'%';
FLUSH PRIVILEGES;

查看權限


SHOW GRANTS;                    -- 當前用戶
SHOW GRANTS FOR 'app_user'@'%'; -- 指定用戶

密碼修改


-- 5.7+ 推薦語法
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass#2024';
-- 或
SET PASSWORD FOR 'root'@'localhost' = 'NewPass#2024';
FLUSH PRIVILEGES;

數據導入導出 (生產級參數)

mysqldump 邏輯備份


# 全量備份 (含存儲過程/觸發器/事件)
mysqldump -h host -u root -p --single-transaction --routines --triggers --events --master-data=2 db_name > backup_$(date +%F).sql

# 僅結構
mysqldump -u root -p -d db_name > schema.sql

# 僅數據 (無建表語句)
mysqldump -u root -p -t db_name > data.sql

# 指定表並壓縮
mysqldump -u root -p db_name tbl1 tbl2 | gzip > backup.sql.gz

導入恢復


# 創建空庫並導入
mysqladmin -h host -u root -p CREATE db_name
mysql -h host -u root -p db_name < backup.sql

# 大文件導入優化
mysql -h host -u root -p --max_allowed_packet=1G --net_buffer_length=1M db_name < backup.sql

物理文件導出 (SELECT ... INTO OUTFILE)


-- 導出純文本 (需 FILE 權限、secure_file_priv 目錄)
SELECT * FROM tbl_name INTO OUTFILE '/var/lib/mysql-files/tbl_name.txt'
  FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

-- 導入
LOAD DATA INFILE '/var/lib/mysql-files/tbl_name.txt'
  INTO TABLE tbl_name
  FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'
  IGNORE 1 LINES;

腳本化執行


# 將 SQL 存文件批量執行
mysql -h host -u root -p db_name < script.sql

# 交互式多語句
mysql -h host -u root -p db_name -e "SELECT 1; SHOW TABLES;"

表結構變更 (DDL)


-- 重命名表
RENAME TABLE old_name TO new_name;
-- 或
ALTER TABLE old_name RENAME new_name;

-- 增加/修改/刪除列
ALTER TABLE tbl ADD COLUMN col_name INT DEFAULT 0;
ALTER TABLE tbl MODIFY COLUMN col_name BIGINT NOT NULL;
ALTER TABLE tbl DROP COLUMN col_name;

-- 索引操作
ALTER TABLE tbl ADD INDEX idx_col (col_name);
ALTER TABLE tbl ADD UNIQUE uk_col (col_name);
ALTER TABLE tbl DROP INDEX idx_col;

運維常用監控命令


SHOW PROCESSLIST;                 -- 當前線程,配合 Id KILL 會話
SHOW ENGINE INNODB STATUS;        -- InnoDB 內部狀態 (鎖/事務/緩存)
SHOW GLOBAL STATUS LIKE 'Com_%';  -- 命令計數器
SHOW GLOBAL VARIABLES LIKE 'innodb_%'; -- 參數檢查

進階技巧

  • 去重查詢: SELECT DISTINCT col FROM tbl;
  • 分頁優化: 避免 LIMIT 100000, 10,改用 WHERE id > last_id LIMIT 10 (需主鍵有序)
  • 複製表結構: CREATE TABLE new_tbl LIKE old_tbl;
  • 清空表 (高效): TRUNCATE TABLE tbl; (DDL、不觸發 Trigger、不可回滾)

總結

熟練掌握上述命令,覆蓋 90%+ 日常開發運維場景。生產環境嚴守:備份先行、最小權限、變更留痕、腳本化執行。建議收藏為速查表,配合 mysql --help 和官方手冊深入學習。

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