每條命令以分號 ; 結尾。交互模式下可用 \g 或 \G(垂直顯示)。
SHOW DATABASES; -- 顯示所有庫
USE db_name; -- 切換庫
CREATE DATABASE db_name; -- 創建庫
DROP DATABASE db_name; -- 刪庫
SHOW TABLES; -- 顯示表
DESC table_name; -- 表結構
CREATE TABLE t (
id INT(3) AUTO_INCREMENT PRIMARY KEY,
name CHAR(8),
sex CHAR(2),
birth DATE
);
DROP TABLE table_name; -- 刪表
-- 插入
INSERT INTO t VALUES('', '張三', '男', '1971-10-01');
-- 查詢
SELECT * FROM t;
SELECT * FROM t WHERE name='張三';
-- 更新
UPDATE t SET birth='1971-01-10' WHERE name='張三';
-- 刪除
DELETE FROM t WHERE name='張三';
-- 清空表(比 DELETE 快,重置自增 ID)
TRUNCATE TABLE t;
-- 創建用戶並授權(主機 % 表示任意 IP)
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'user1'@'%' IDENTIFIED BY '123';
-- 僅本地訪問,限定庫
GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO 'user2'@'localhost' IDENTIFIED BY '123';
FLUSH PRIVILEGES;
-- 查看/回收權限
SHOW GRANTS FOR 'user2'@'localhost';
REVOKE DELETE ON mydb.* FROM 'user2'@'localhost';
-- 危險權限慎給:SUPER, PROCESS, FILE
# 邏輯備份
mysqldump -u root -p --opt db_name > backup.sql
mysqldump -u root -p db_name | gzip > backup.sql.gz
# 只導結構/只導數據
mysqldump -d -u root -p db_name > ddl.sql
mysqldump -t -n -u root -p db_name > data.sql
# 恢復
mysql -u root -p db_name < backup.sql
gunzip < backup.sql.gz | mysql -u root -p db_name
# 表級導出導入
SELECT * INTO OUTFILE '/tmp/data.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' FROM t;
LOAD DATA INFILE '/tmp/data.txt' INTO TABLE t FIELDS TERMINATED BY ',' ENCLOSED BY '"';
--log-error[=file],默認 hostname.errmysqlbinlog log-file 解析hostname-slow.log,工具 mysqldumpslow 分析日志清理:RESET MASTER;、PURGE MASTER LOGS TO 'bin.000006';、PURGE MASTER LOGS BEFORE '2023-01-01';、配置 expire_logs_days=7 自動過期。