本文彙整 MySQL 日常操作的核心指令,涵蓋服務管理、連線參數、資料庫/表/資料/用戶的增刪改查,適合初學者快速上手與資深工程師備查。
| 作業 | Windows | Linux (systemd) | Linux (SysVinit) |
|---|---|---|---|
| 啟動 | net start MySQL | systemctl start mysqld | service mysqld start |
| 停止 | net stop MySQL | systemctl stop mysqld | service mysqld stop |
| 重啟 | net stop MySQL && net start MySQL | systemctl restart mysqld | service mysqld restart |
| 狀態 | sc query MySQL | systemctl status mysqld | service mysqld status |
# 完整參數
mysql -h 主機 -u 用戶 -p密碼 資料庫名稱
# 範例(密碼前無空格)
mysql -h 127.0.0.1 -u root -p123456 testdb
# 互動式輸入密碼(較安全)
mysql -h 127.0.0.1 -u root -p testdb
Enter password: ********
-h:主機(本機可省略)。-u:用戶名。-p:密碼(緊跟參數或互動輸入)。USE db; 切換)。CREATE DATABASE db_name [CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci];
SHOW DATABASES;
USE db_name;
DROP DATABASE db_name;
CREATE TABLE guestbook (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
url VARCHAR(100) DEFAULT '#',
ip VARCHAR(45) DEFAULT NULL,
email VARCHAR(100) DEFAULT '#',
qq VARCHAR(20) DEFAULT NULL,
created_at DATETIME DEFAULT NULL,
content TEXT,
name VARCHAR(20) DEFAULT '匿名',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
| 操作 | 指令 |
|---|---|
| 顯示所有表 | SHOW TABLES; |
| 檢視表結構 | DESC table_name; 或 SHOW COLUMNS FROM table_name; |
| 檢視建表語句 | SHOW CREATE TABLE table_name; |
| 修改引擎 | ALTER TABLE table_name ENGINE=InnoDB; |
| 刪除表 | DROP TABLE table_name; |
| 清空表(重置自增) | TRUNCATE TABLE table_name; |
-- 插入單筆
INSERT INTO guestbook (url, ip, email, qq, created_at, content, name)
VALUES ('https://example.com', '127.0.0.1', 'a@b.com', '12345', NOW(), '測試留言', '張三');
-- 批次插入
INSERT INTO guestbook (url, ip, email, qq, created_at, content, name) VALUES
('https://a.com', '10.0.0.1', 'a@a.com', '111', NOW(), '內容1', '甲'),
('https://b.com', '10.0.0.2', 'b@b.com', '222', NOW(), '內容2', '乙');
-- 從檔案匯入 (本機檔案)
LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE guestbook
LINES TERMINATED BY '\r\n';
-- 查詢
SELECT * FROM guestbook;
SELECT id, name, content FROM guestbook WHERE id > 10 ORDER BY id DESC LIMIT 20;
-- 更新
UPDATE guestbook SET name='李四' WHERE id=1;
-- 刪除
DELETE FROM guestbook WHERE id=1;
DELETE FROM guestbook; -- 清空全表
USE mysql;
SELECT user, host FROM user;
CREATE USER 'app'@'%' IDENTIFIED BY 'StrongPass123!';
CREATE USER 'readonly'@'10.0.%' IDENTIFIED BY 'ReadOnly456!';
| 需求 | 指令 |
|---|---|
| 全庫全權限(含授權權限) | GRANT ALL PRIVILEGES ON *.* TO 'app'@'%' WITH GRANT OPTION; |
| 特定庫讀寫 | GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO 'app'@'%'; |
| 唯讀帳號 | GRANT SELECT ON mydb.* TO 'readonly'@'10.0.%'; |
| 僅特定表權限 | GRANT SELECT,INSERT ON mydb.orders TO 'writer'@'%'; |
授權後必須 FLUSH PRIVILEGES; 生效(MySQL 8.0 通常自動生效,但保留習慣無妨)。
-- MySQL 5.7+
ALTER USER 'app'@'%' IDENTIFIED BY 'NewPass456!';
-- 或
SET PASSWORD FOR 'app'@'%' = 'NewPass456!';
SHOW GRANTS FOR 'app'@'%';
DROP USER 'app'@'%';
QUIT; -- 或 EXIT; 或 \q
[mysqld] 區段加入 character-set-server=utf8mb4、collation-server=utf8mb4_general_ci。[client]、[mysql] 加入 default-character-set=utf8mb4。?characterEncoding=utf8mb4(JDBC)或執行 SET NAMES utf8mb4;。掌握上述指令即可應付 90% 日常 MySQL 運維開發工作。建議搭配 mysql --help、官方文件與 SHOW VARIABLES/STATUS 深入探索。