整理最常用的MySQL命令列操作,涵蓋資料庫/資料表管理、使用者授權、資料匯出入、密碼維護等核心場景,適合DBA與開發人員快速查閱。
| 操作 | 命令 | 說明 |
|---|---|---|
| 建立資料庫 | CREATE DATABASE dbname; | 支援CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci |
| 選擇資料庫 | USE dbname; | |
| 刪除資料庫 | DROP DATABASE dbname; | 無提示直接刪除,謹慎使用 |
| 顯示所有資料庫 | SHOW DATABASES; | |
| 顯示資料表列表 | SHOW TABLES; | 需先USE dbname |
| 檢視表結構 | DESCRIBE tablename; 或 SHOW COLUMNS FROM tablename; | |
| 查看版本與日期 | SELECT VERSION(), CURRENT_DATE; |
# 進入MySQL客戶端
mysql -u root -p
# 修改密碼(MySQL 5.7+建議使用ALTER USER)
UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE User='root';
-- 或
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';
FLUSH PRIVILEGES;
注意:MySQL 5.7+ password欄位改為authentication_string,舊版使用password欄位。
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'strongpass' WITH GRANT OPTION;
-- 僅允許特定主機存取特定資料庫
GRANT SELECT, INSERT, UPDATE, DELETE ON `appdb`.* TO 'appuser'@'192.168.1.%' IDENTIFIED BY 'apppass';
-- 僅讀報表帳號
GRANT SELECT ON `reportdb`.* TO 'readonly'@'%' IDENTIFIED BY 'readpass';
REVOKE ALL PRIVILEGES ON *.* FROM 'olduser'@'%';
DELETE FROM mysql.user WHERE User='olduser' AND Host='%';
FLUSH PRIVILEGES;
-- 重命名資料表
ALTER TABLE old_table RENAME new_table;
-- 新增欄位
ALTER TABLE users ADD COLUMN email VARCHAR(100) AFTER name;
-- 修改欄位屬性
ALTER TABLE users MODIFY COLUMN email VARCHAR(150) NOT NULL;
-- 刪除欄位
ALTER TABLE users DROP COLUMN temp_field;
# 單一資料庫
mysqldump -h host -u root -p dbname > dbname_backup.sql
# 多個資料庫
mysqldump -u root -p --databases db1 db2 > multi_backup.sql
# 所有資料庫
mysqldump -u root -p --all-databases > full_backup.sql
# 僅結構(-d / --no-data)
mysqldump -u root -p -d dbname > schema_only.sql
# 僅資料(-t / --no-create-info)
mysqldump -u root -p -t dbname > data_only.sql
# 建立空資料庫
mysqladmin -h host -u root -p create dbname
# 匯入備份檔
mysql -h host -u root -p dbname < dbname_backup.sql
# 或在MySQL客戶端內執行
SOURCE /path/to/backup.sql;
# 匯出指定資料表為純文字檔
mysqldump -T /export/path dbname tablename
# 產生兩個檔案:
# tablename.sql -- 建表語句
# tablename.txt -- 純資料(Tab分隔,無SQL指令)
需確保MySQL服務進程對/export/path有寫入權限,且secure_file_priv設定允許該路徑。
# 從檔案讀取並執行SQL命令
mysql -h host -u root -p dbname < script.sql
# 在MySQL客戶端內執行
SOURCE /path/to/script.sql;
適用於大量DDL/DML操作、資料遷移、結構同步等場景。