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

MySQL 常用命令與實用技巧完整手冊:連線、帳號、庫表操作、備份、匯入

     編輯:MySQL 資料庫相關知識

一、連線 MySQL

# 本機
mysql -u root -p

# 遠程
mysql -h 192.168.1.10 -u root -p'password'

# 退出
exit 或 quit

二、修改密碼

# 首次設定(無舊密碼)
mysqladmin -u root password 'newpass'

# 變更
mysqladmin -u root -p'oldpass' password 'newpass'

# MySQL 5.7+ 內部 SQL
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';

三、帳號管理(最小權限原則)

# 建立唯讀帳號
CREATE USER 'readonly'@'%' IDENTIFIED BY 'pass';
GRANT SELECT ON mydb.* TO 'readonly'@'%';

# 建立讀寫帳號(限定 IP)
CREATE USER 'app'@'10.0.%' IDENTIFIED BY 'strong_pass';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app'@'10.0.%';

# 管理員帳號(可授權)
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'pass';
GRANT ALL ON mydb.* TO 'admin'@'localhost' WITH GRANT OPTION;

# 刪除帳號
DROP USER 'old'@'%';

# 刷新權限
FLUSH PRIVILEGES;

四、庫與表操作

操作指令
顯示所有庫SHOW DATABASES;
建立庫CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
切換庫USE db_name;
顯示表SHOW TABLES;
檢視表結構DESC table_name; 或 SHOW COLUMNS FROM table_name;
檢視建表 SQLSHOW CREATE TABLE table_name;
建表範例CREATE TABLE t (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
刪表DROP TABLE table_name;
清空表TRUNCATE TABLE table_name;
修改表結構ALTER TABLE t ADD COLUMN email VARCHAR(100);

五、資料增刪改查 (CRUD)

-- 插入
INSERT INTO t (name) VALUES ('Alice'), ('Bob');

-- 查詢
SELECT * FROM t WHERE name LIKE '%Ali%';

-- 更新
UPDATE t SET name='Alice Updated' WHERE id=1;

-- 刪除
DELETE FROM t WHERE id=2;

六、文字檔匯入匯出

# 匯出(Tab 分隔)
SELECT * FROM t INTO OUTFILE '/tmp/t.txt' FIELDS TERMINATED BY '\t';

# 匯入(需 FILE 權限、secure_file_priv 允許目錄)
LOAD DATA INFILE '/tmp/t.txt' INTO TABLE t FIELDS TERMINATED BY '\t';

# 本地檔案匯入(客戶端讀檔)
LOAD DATA LOCAL INFILE 'C:/data/t.txt' INTO TABLE t FIELDS TERMINATED BY '\t';

七、備份與還原

# 完整備份(含例程、觸發器、事件)
mysqldump --single-transaction --master-data=2 --routines --triggers --events -u root -p db > db_full.sql

# 壓縮備份
mysqldump ... | gzip > db_$(date +%F).sql.gz

# 還原
mysql -u root -p db < db_full.sql

# 或進入 mysql 後
SOURCE /path/db_full.sql;

八、腳本化執行

  • 互動模式:mysql> SOURCE script.sql;
  • 非互動:mysql -u user -p db < script.sql
  • 單條指令:mysql -u user -p -e "SELECT * FROM t;"

九、效能診斷常用指令

指令用途
SHOW PROCESSLIST;當前連線/查詢,找長時間運行
SHOW ENGINE INNODB STATUS;InnoDB 內部狀態、鎖、死鎖
SHOW GLOBAL STATUS LIKE 'Threads%';連線統計
SHOW VARIABLES LIKE 'max_connections';參數檢視
EXPLAIN SELECT ...;執行計劃分析
SHOW INDEX FROM t;索引資訊
ANALYZE TABLE t;更新統計資訊
OPTIMIZE TABLE t;整理碎片、回收空間

十、實用技巧彙總

  • 分頁優化:游標分頁 WHERE id > last_id ORDER BY id LIMIT 20 取代 LIMIT offset, limit。
  • 防注入:一律使用預處理/參數綁定,拼接 SQL 視為缺陷。
  • 字符集:全鏈路 utf8mb4(資料庫/表/欄位/連線/程式)。
  • 時區:伺服器、連線、應用統一 UTC,存 TIMESTAMP 或 DATETIME。
  • 備份驗證:定期在測試環境完整還原,記錄 RTO/RPO。
  • 監控告警:連線數、慢查詢、磁碟、複寫延遲、備份失敗。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved