MySQL 常用命令 - 码剑客

连接、查询、备份恢复、授权与锁排查的高频命令,含锁表与大表操作的风险提示。

MySQL 5.7 / 8.0更新于 2026-10-29共 34 条

连接与库表

交互式登录,密码不会留在命令历史

mysql -h 127.0.0.1 -P 3306 -u root -p

登录后直接进入指定数据库

mysql -h 127.0.0.1 -P 3306 -u root -p -D <DB>

列出当前账号可见的全部数据库

show databases;

切换当前数据库

use <DB>;

列出当前库中的全部表

show tables;

查看表结构,等价于 show columns from

desc <TABLE>;
高危

清空全表并重置自增,无法回滚

truncate table <TABLE>;

查询与执行计划

查看执行计划,确认是否命中索引

explain select * from <TABLE> where id = 1;

输出真实执行耗时,需 8.0.18 及以上

explain analyze select * from <TABLE> where id = 1;

排序分页查询,避免无 limit 的全表扫描

select id, name
from <TABLE>
where status = 1
order by id desc
limit 20;

查看当前连接与正在执行的 SQL

show processlist;

查看表的索引定义与区分度基数

show index from <TABLE>;

统计符合条件的行数,大表慎用

select count(*) from <TABLE> where created_at >= '2026-01-01';

备份与恢复

备份单个库,含存储过程与触发器

mysqldump -u root -p --single-transaction --routines --triggers <DB> > <DB>.sql

InnoDB 加 --single-transaction 可避免备份期间锁表

备份全部数据库到单个文件

mysqldump -u root -p --single-transaction --all-databases > all.sql

只导出表结构,不包含数据

mysqldump -u root -p --single-transaction --no-data <DB> > schema.sql

一次备份多个库并保留建库语句

mysqldump -u root -p --single-transaction --databases <DB1> <DB2> > multi.sql

将备份文件恢复到指定库

mysql -u root -p <DB> < <DB>.sql

在 mysql 客户端内执行,导入备份文件

source /backup/<DB>.sql

用户与授权

创建限定网段登录的账号

create user 'app'@'10.0.%' identified by '<PASSWORD>';

授予指定库的增删改查权限

grant select, insert, update, delete on <DB>.* to 'app'@'10.0.%';

用 grant 授权后无需 flush privileges,直接改权限表才需要

查看账号已获得的权限

show grants for 'app'@'10.0.%';

回收指定权限,不影响其他授权

revoke delete on <DB>.* from 'app'@'10.0.%';
高危

删除账号,已有连接会立即失效

drop user 'app'@'10.0.%';

参数与状态

查看最大连接数配置

show variables like 'max_connections';

查看当前已建立的连接数

show global status like 'Threads_connected';

查看 InnoDB 事务、锁等待与缓冲池状态

show engine innodb status\G

开启慢查询日志,定位低效 SQL

set global slow_query_log = on;

只对新连接生效,重启丢失,需写入配置文件

把慢查询阈值调整为 1 秒

set global long_query_time = 1;

锁与故障排查

查看运行中的事务及其开始时间

select * from information_schema.innodb_trx order by trx_started;

查看当前的锁等待关系

select * from performance_schema.data_lock_waits;

8.0 用此视图,5.7 改用 information_schema.innodb_lock_waits

按耗时排序找出长时间运行的查询

select * from information_schema.processlist where command <> 'Sleep' order by time desc;

只终止该连接上正在执行的语句

kill query 12345;
高危

终止整个连接,未提交事务会被回滚

kill 12345;

相关工具

本网站使用 Cookie 以确保您在我们的网站上获得最佳体验。 隐私政策.