服務管理 (Linux)
# 啟動
systemctl start mysqld
# 或
/etc/init.d/mysql start
# 重啟
systemctl restart mysqld
# 停止
systemctl stop mysqld
# 或
mysqladmin -u root -p shutdown
連線與基本操作
# 連線
mysql -u root -p
# 退出
EXIT; 或 QUIT; 或 \q
# 修改密碼
mysqladmin -u root -p'old' password 'new'
# 或在客戶端
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new');
FLUSH PRIVILEGES;
使用者管理
-- 建立使用者 (可指定主機 %)
CREATE USER 'test'@'%' IDENTIFIED BY '123';
-- 授權 (全庫全表 CRUD)
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'test'@'%';
FLUSH PRIVILEGES;
資料庫操作
SHOW DATABASES;
USE db_name;
CREATE DATABASE db_name CHARACTER SET utf8mb4;
DROP DATABASE db_name;
資料表操作
SHOW TABLES;
DESC table_name; -- 結構
CREATE TABLE t (id INT PRIMARY KEY, name VARCHAR(20));
DROP TABLE t;
TRUNCATE TABLE t; -- 清空並重置 AUTO_INCREMENT
DELETE FROM t; -- 清空但保留 AUTO_INCREMENT
SELECT * FROM t;
編碼修改
-- 全域 (啟動參數)
mysqld --default-character-set=utf8mb4
-- 單庫
ALTER DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 連線編碼
SET NAMES utf8mb4;
資料匯入匯出
匯出
# 全庫
mysqldump --opt db_name > backup.sql
# 指定表
mysqldump --opt db_name tbl1 tbl2 > backup.sql
# 多庫
mysqldump --databases db1 db2 > backup.sql
# 遠端
mysqldump -h host -u user -p --databases db_name > backup.sql
# 所有庫
mysqldump --all-databases > all.sql
匯入
mysql -u root -p db_name < backup.sql
# 或客戶端
SOURCE /path/backup.sql;
文字檔匯入
-- 格式:欄位用 Tab 分隔,NULL 用 \N
LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE tbl_name;
備份腳本範例 (Windows 批次檔)
@echo off
set DATE=%date:~0,4%%date:~5,2%%date:~8,2%
mysqldump -u root -p"pwd" --single-transaction db_name > D:\backup\db_%DATE%.sql