# 查看索引
SHOW INDEX FROM tbl_name;
# 強制使用指定索引
SELECT * FROM tbl_name USE INDEX (idx_name) WHERE ...;
# 強制忽略索引
SELECT * FROM tbl_name IGNORE INDEX (idx_name) WHERE ...;
# 建庫指定字符集/排序規則
CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
# 修改庫編碼
ALTER DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
# 修改表編碼(僅影響新資料)
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
# 建立用戶並授權(8.0+)
CREATE USER 'user'@'%' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON db_name.* TO 'user'@'%';
FLUSH PRIVILEGES;
# 僅本機
GRANT ALL ON db_name.* TO 'user'@'localhost' IDENTIFIED BY 'pass';
# 查看權限
SHOW GRANTS FOR 'user'@'%';
# 回收/刪除
REVOKE ALL ON db_name.* FROM 'user'@'%';
DROP USER 'user'@'%';
SHOW TABLE STATUS WHERE Comment='VIEW';
-- 或
SHOW FULL TABLES WHERE Table_type='VIEW';
# 啟動時指定(臨時)
mysqld_safe --default-character-set=utf8mb4 &
# 永久生效寫入 my.cnf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci
# 重命名表
RENAME TABLE old_name TO new_name;
# 修改欄位屬性
ALTER TABLE tbl_name CHANGE old_col new_col VARCHAR(50) NOT NULL;
# 指定位置新增欄位
ALTER TABLE tbl_name ADD new_col DATETIME NOT NULL AFTER exist_col;
| 動作 | systemd (CentOS 7+/Ubuntu 16+) | SysVinit (舊版) |
|---|---|---|
| 啟動 | systemctl start mysqld | service mysqld start / /etc/init.d/mysqld start |
| 停止 | systemctl stop mysqld | service mysqld stop |
| 重啟 | systemctl restart mysqld | service mysqld restart |
| 狀態 | systemctl status mysqld | service mysqld status |
| 開機自啟 | systemctl enable mysqld | chkconfig mysqld on |
# 本機連線
mysql -u root -p
# 指定 socket(多實例)
mysql -u root -p -S /data/app_1/mysql.sock
# 修改密碼
mysqladmin -u root -p'old' password 'new'
-- 或 SQL
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new';
FLUSH PRIVILEGES;
# 備份(單庫)
mysqldump -u root -p db_name > backup.sql
# 還原
mysql -u root -p db_name < backup.sql
# 壓縮備份
mysqldump -u root -p db_name | gzip > backup.sql.gz
gunzip < backup.sql.gz | mysql -u root -p db_name
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'test'@'%' IDENTIFIED BY '123';
FLUSH PRIVILEGES;
mysql_secure_installation 互動式加固。DELETE FROM mysql.user WHERE User=''; FLUSH PRIVILEGES;DROP DATABASE test;DELETE FROM mysql.user WHERE User='root' AND Host!='localhost'; FLUSH PRIVILEGES;本文彙整 Linux 環境下 MySQL 運維最高頻的命令:索引、編碼、授權、視圖、DDL、服務管理、連線、備份、安全。建議收藏並根據實際版本(5.7/8.0)微調語法(如 PASSWORD() 已移除、caching_sha2_password 預設)。