連線 MySQL 伺服器
# 本機連線
mysql -u root -p
# 遠程連線
mysql -h 192.168.1.100 -u root -p
# 指定埠口
mysql -h host -P 3306 -u user -p
# 退出
exit
修改 root 密碼
# 首次設定(無舊密碼)
mysqladmin -u root password 'NewP@ssw0rd!'
# 變更密碼
mysqladmin -u root -p'oldpass' password 'newpass'
用戶與權限管理
建立用戶
-- 僅本機存取,具備 mydb 完整權限
CREATE USER 'dev'@'localhost' IDENTIFIED BY 'DevP@ssw0rd!';
GRANT ALL PRIVILEGES ON mydb.* TO 'dev'@'localhost';
-- 允許特定網段存取,唯讀權限
CREATE USER 'readonly'@'192.168.1.%' IDENTIFIED BY 'ReadOnlyP@ss!';
GRANT SELECT ON mydb.* TO 'readonly'@'192.168.1.%';
FLUSH PRIVILEGES;
移除用戶
DROP USER 'dev'@'localhost';
資料庫與資料表操作 (DDL)
-- 建立/刪除資料庫
CREATE DATABASE school CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
DROP DATABASE IF EXISTS school;
-- 切換資料庫
USE school;
-- 建立資料表
CREATE TABLE teacher (
id INT(3) AUTO_INCREMENT PRIMARY KEY,
name CHAR(10) NOT NULL,
address VARCHAR(50) DEFAULT '深圳',
hire_date DATE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 刪除資料表
DROP TABLE teacher;
-- 清空資料表
TRUNCATE TABLE teacher; -- 比 DELETE 更快,重置自增 ID
資料操作 (DML)
-- 插入資料
INSERT INTO teacher (name, address, hire_date) VALUES
('glchengang', '深圳一中', '1976-10-10'),
('jack', '深圳一中', '1975-12-23');
-- 查詢資料
SELECT * FROM teacher;
SELECT name, address FROM teacher WHERE hire_date > '1980-01-01';
-- 更新資料
UPDATE teacher SET address = '廣州' WHERE name = 'jack';
-- 刪除資料
DELETE FROM teacher WHERE id = 2;
批次執行 SQL 腳本
# 匯入腳本檔
mysql -u root -p < school.sql
# 匯出資料庫結構與資料
mysqldump -u root -p school > school_backup.sql
# 僅匯出結構
mysqldump -u root -p -d school > school_structure.sql
# 僅匯出資料
mysqldump -u root -p -t school > school_data.sql
文字檔匯入資料
-- 資料檔案格式:欄位用 Tab 分隔,NULL 用 \N 表示
LOAD DATA LOCAL INFILE 'teacher.txt' INTO TABLE teacher
FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';
常用查看指令
SHOW DATABASES;
SHOW TABLES;
DESCRIBE teacher; -- 或 SHOW COLUMNS FROM teacher
SHOW CREATE TABLE teacher;
SELECT VERSION(), CURRENT_DATE;
新手提示
- 命令以
; 結尾,可跨多行輸入
- 使用
\c 取消當前命令
- 善用
Tab 自動補全表名/欄位名
- 官方文件:
https://dev.mysql.com/doc/