連線與授權
# 連線
mysql -h host -u user -p[password] db_name
# 退出
EXIT; -- 或 QUIT、\q
# 建立用戶並授權
GRANT SELECT, INSERT ON db.* TO 'user'@'host' IDENTIFIED BY 'pass';
# 修改密碼
mysqladmin -u user -p'oldpass' password 'newpass'
# 回收權限
REVOKE SELECT, INSERT ON *.* FROM 'user'@'host';
資料庫操作
SHOW DATABASES;
CREATE DATABASE db_name CHARACTER SET utf8mb4;
USE db_name;
DROP DATABASE db_name;
資料表操作
SHOW TABLES;
DESCRIBE tbl_name; -- 結構
SHOW CREATE TABLE tbl_name; -- 建表語句
CREATE TABLE tbl (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL
) ENGINE=InnoDB;
ALTER TABLE t1 RENAME t2;
DROP TABLE tbl_name;
TRUNCATE TABLE tbl_name; -- 快速清空,重置自增
資料操作 (DML)
SELECT * FROM tbl;
INSERT INTO tbl (name) VALUES ('test');
UPDATE tbl SET name='new' WHERE id=1;
DELETE FROM tbl WHERE id=1;
備份與還原
# 表備份
mysqldump -h host -u root -p db_name tbl_name > tbl_name.sql
# 表還原(先刪除原表)
mysql -h host -u root -p db_name < tbl_name.sql
# 庫備份
mysqldump -h host -u root -p db_name > db_name.sql
# 庫還原
mysql -h host -u root -p db_name < db_name.sql
# 全庫備份
mysqldump --all-databases > all_databases.sql
表結構變更 (DDL)
# 新增欄位
ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD INDEX (c);
# 修改欄位
ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);
# 刪除欄位
ALTER TABLE t2 DROP COLUMN c;
維護與修復
# 檢查並修復所有表
mysqlcheck -A -o -u root -p
# 匯入文本資料
LOAD DATA LOCAL INFILE 'file.txt' INTO TABLE tbl_name;
提示
- 生產環境備份建議加
--single-transaction --routines --triggers --events 參數。
- 大數據量匯入優先用
LOAD DATA INFILE,比 INSERT 快數量級。
- 定期執行
ANALYZE TABLE 更新統計資訊,優化查詢計劃。