MySQL 常用命令速查表

把 MySQL 日常最常敲的命令按连接、库表、查询、锁排查、备份恢复和主从分组整理,排障现场直接复制改参数即可。

数据库·共 37 条命令·最后更新 2026-07-06
返回 数据库

连接与用户 Connection & User 7

mysql -u root -p -h 127.0.0.1 -P 3306
交互式连接,-p 回车后输密码,-h 指定主机,-P 指定端口
mysql -u root -p db_name < dump.sql
导入 SQL 文件到指定库
mysqldump -u root -p --single-transaction db_name > backup.sql
一致性快照备份,不锁表(InnoDB)
CREATE USER 'app'@'%' IDENTIFIED BY 'password';
创建用户,'%' 允许所有主机连接,生产环境应限定 IP
GRANT SELECT, INSERT, UPDATE ON db.* TO 'app'@'%';
授予指定库的增删改查权限,最小权限原则
ALTER USER 'app'@'%' IDENTIFIED BY 'new_password';
修改用户密码,MySQL 5.7+ 语法
SHOW GRANTS FOR CURRENT_USER;
查看当前用户权限

库表操作 Database & Table 8

SHOW DATABASES;
列出所有数据库
USE db_name;
切换到指定数据库
SHOW TABLES;
列出当前库的所有表
DESC table_name;
查看表结构,等价于 SHOW COLUMNS FROM
SHOW CREATE TABLE table_name\G
查看建表语句,\G 竖排输出更易读
ALTER TABLE t ADD COLUMN col INT DEFAULT 0 AFTER id;
加列并指定位置,大表慎用(锁表)
ALTER TABLE t ADD INDEX idx_name (col);
添加索引,生产环境用 pt-online-schema-change 避免锁表
TRUNCATE TABLE t;
清空表数据保留结构,比 DELETE 快且不可回滚

查询与索引 Query & Index 6

EXPLAIN SELECT * FROM t WHERE col = 1\G
查看执行计划,关注 type/key/rows/Extra
EXPLAIN FORMAT=JSON SELECT ...
JSON 格式执行计划,信息更详细(MySQL 5.6+)
SHOW INDEX FROM t;
查看表所有索引,关注 Cardinalinality 判断选择性
SELECT COUNT(*) FROM t WHERE col IS NULL;
统计 NULL 值数量,索引不包含 NULL 行
SHOW STATUS LIKE "Slow_queries";
查看慢查询数量,需开启 slow_query_log
SHOW VARIABLES LIKE 'slow_query%';
查看慢查询日志配置

进程与锁 Process & Lock 6

SHOW PROCESSLIST;
查看所有连接和正在执行的 SQL,快速定位卡住的查询
SHOW FULL PROCESSLIST;
显示完整 SQL 语句(不截断)
KILL <id>;
终止指定连接,先确认不是主从复制线程
SELECT * FROM information_schema.INNODB_TRX;
查看当前事务,找长事务和锁等待
SELECT * FROM performance_schema.data_locks WHERE LOCK_STATUS='PENDING';
查看锁等待(MySQL 8.0+)
SHOW ENGINE INNODB STATUS\G
InnoDB 引擎状态,含死锁信息和 LATEST DETECTED DEADLOCK

备份恢复 Backup & Recovery 5

mysqldump -u root -p --all-databases --routines --triggers > all.sql
全库备份含存储过程和触发器
mysqldump -u root -p --single-transaction --master-data=2 db > db.sql
记录 binlog 位置,用于搭建从库
mysqlbinlog --start-datetime="2026-01-01 00:00:00" mysql-bin.000123 | mysql -u root -p
按时间点恢复(PITR)
mysql -u root -p -e "SET GLOBAL read_only=1;"
设只读模式,主从切换前用
SHOW BINARY LOGS;
查看 binlog 列表和大小

主从复制 Replication 5

SHOW SLAVE STATUS\G
查看从库状态(MySQL 5.7),关注 Slave_IO_Running 和 Slave_SQL_Running
SHOW REPLICA STATUS\G
查看从库状态(MySQL 8.0+ 新语法)
CHANGE REPLICATION SOURCE TO SOURCE_HOST='10.0.0.1', SOURCE_PORT=3306;
配置主库地址(MySQL 8.0+)
START REPLICA; STOP REPLICA;
启停复制(MySQL 8.0+)
SELECT * FROM performance_schema.replication_applier_status_by_worker;
查看复制 worker 状态和错误

💡 提示

  • 生产环境加列加索引用 pt-online-schema-change 或 gh-ost,不要直接 ALTER 大表。
  • 看到 Seconds_Behind_Master 为 0 不代表无延迟,大事务可能导致跳变,结合 relay log 大小判断。
  • 慢查询排查先开 slow_query_log,再用 pt-query-digest 分析 TOP SQL,不要只看 EXPLAIN。