在日常開發中,MySQL 資料庫的操作無所不在:建立資料庫、管理權限、查詢資料、優化索引等。對於初次接觸命令列操作的開發者來說,記憶這些指令往往是一大挑戰。本文系統整理了 MySQL 最常用的操作命令,涵蓋服務管理、使用者權限、資料庫與資料表操作、備份還原等核心場景,方便日後快速查閱。
# 啟動 MySQL 服務
net start mysql
# 停止 MySQL 服務
net stop mysql
# 連線資料庫
mysql -h 主機地址 -u使用者名稱 -p使用者密碼
# 退出操作
quit;
flush privileges;
# 一次建立多個使用者
CREATE USER 'user1' IDENTIFIED BY '密碼1', 'user2' IDENTIFIED BY '密碼2';
# 或授權同時建立
GRANT SELECT ON 資料庫.* TO '使用者名稱'@'登入主機' IDENTIFIED BY '密碼';
# 方式一:mysqladmin
mysqladmin -u使用者名稱 -p舊密碼 password 新密碼
# 方式二:直接更新 user 表
UPDATE user SET password=PASSWORD('新密碼') WHERE user='使用者名稱';
# 資料庫/資料表層級授權
GRANT ALL ON db_name.table_name TO 'user_name' [IDENTIFIED BY 'password'];
# 設定登入 IP 限制
GRANT ALL PRIVILEGES ON 資料庫.* TO '使用者名稱'@'主機地址' IDENTIFIED BY '密碼' WITH GRANT OPTION;
# 範例:root 可從本機存取所有資料庫
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '1234567890' WITH GRANT OPTION;
# 範例:root 可從任意 IP 存取 mydatabase
GRANT ALL PRIVILEGES ON mydatabase.* TO 'root'@'%' IDENTIFIED BY '1234567890' WITH GRANT OPTION;
# 移除 IP 授權
REVOKE ALL PRIVILEGES ON 資料庫.* FROM '使用者名稱'@'%';
# 或直接刪除 user 表記錄
DELETE FROM user WHERE user='root' AND host='%';
# 刪除使用者
DELETE FROM user WHERE User='使用者名稱' AND Host='主機地址';
# 列出所有資料庫
SHOW DATABASES;
# 使用指定資料庫
USE database_name;
# 建立資料庫
CREATE DATABASE database_name;
# 刪除資料庫
DROP DATABASE database_name;
# 列出所有資料表
SHOW TABLES;
# 建立資料表(基本語法)
CREATE TABLE table_name (欄位1 資料型態, 欄位2 資料型態);
# 刪除資料表
DROP TABLE table_name;
# 檢視資料表結構
DESCRIBE table_name;
# 或
SHOW COLUMNS FROM table_name;
# 插入資料
INSERT INTO table_name [(欄位1, 欄位2, ...)] VALUES (值1, 值2, ...);
# 更新資料
UPDATE table_name SET 欄位名='新值' [, 欄位2='新值', ...] [WHERE id=id_num] [ORDER BY 欄位 排序];
# 刪除資料
DELETE FROM table_name; -- 清空整張表
DELETE FROM table_name WHERE 條件; -- 刪除符合條件的資料
# 查詢所有記錄
SELECT * FROM table_name;
# 修改資料表名稱
ALTER TABLE table_name RENAME TO new_table_name;
# 新增主鍵
ALTER TABLE table_name ADD PRIMARY KEY (col_name);
# 刪除主鍵
ALTER TABLE table_name DROP PRIMARY KEY;
# 新增欄位
ALTER TABLE table_name ADD col_name VARCHAR(20);
# 刪除欄位
ALTER TABLE table_name DROP col_name;
# 修改欄位屬性
ALTER TABLE table_name MODIFY col_name VARCHAR(40) NOT NULL;
# 修改欄位名稱(需指定完整屬性)
ALTER TABLE table_name CHANGE old_col_name new_col_name VARCHAR(40);
# 依現有表結構建立新表(不複製資料)
CREATE TABLE new_table_name LIKE old_table_name;
# 约束與索引相關
-- 主鍵: PRIMARY KEY
-- 唯一性: UNIQUE
-- 非空: NOT NULL
-- 自動遞增: AUTO_INCREMENT
-- 外鍵: FOREIGN KEY ... REFERENCES table_name(col_name)
# 刪除有關聯資料的多張表:設定 foreign key 為 SET NULL
# 執行外部 SQL 腳本
mysql < extend.sql
# 指定資料庫執行腳本
mysql [資料庫名] < extend.sql
# 匯入資料
LOAD DATA LOCAL INFILE '檔案名' INTO TABLE 資料表名;
# 備份資料庫
mysqldump -h 主機地址 -u 使用者名稱 -p 資料庫名 > dbname_backup.sql
# 還原資料庫
mysqladmin -h 主機地址 -u 使用者名稱 -p create 新資料庫名
mysqldump -h 主機地址 -u 使用者名稱 -p 新資料庫名 < dbname_backup.sql
# 匯出建表指令
mysqladmin -u 使用者名稱 -p -d 資料庫名 > a.sql
# 匯出插入資料 SQL(不含建表指令)
mysqladmin -u 使用者名稱 -p -t 資料庫名 > a.sql
# 匯出純文字資料(需指定 -T 參數)
mysqldump -T 匯出目錄 資料庫名 指定資料表
# 查看版本號
SELECT VERSION();
# 查看當前使用者
SELECT USER();
# 查看當前資料庫
SELECT DATABASE();
掌握這些核心命令,能大幅提升 MySQL 日常運維與開發效率。建議收藏備查,實際操作時請根據具體環境調整參數,特別是權限管理與備份還原操作,務必在測試環境驗證後再應用於生產環境。