MySQL 常用工具
除图形化客户端外,MySQL 自带一组命令行工具:
mysql执行 SQL、mysqladmin做管理、mysqlbinlog看二进制日志、mysqlshow查库表统计。
一、mysql(客户端工具)
这里的 mysql 不是指 MySQL 服务,而是 MySQL 的客户端工具。
mysql [options] [database]
| 选项 | 含义 |
|---|---|
-u, --user=name | 指定用户名 |
-p, --password[=name] | 指定密码 |
-h, --host=name | 指定服务器 IP 或域名 |
-P, --port=port | 指定连接端口 |
-e, --execute=name | 执行 SQL 语句并退出 |
-e 选项可以在 MySQL 客户端执行 SQL 语句,而不用连接到 MySQL 数据库再执行,对一些批处理脚本尤其方便。
# 连接并执行一条查询后退出
mysql -uroot -p123456 db01 -e "select * from stu";
-p与密码之间不能有空格(-p123456);写成-p 123456会被当作数据库名。
二、mysqladmin(管理工具)
mysqladmin 是一个执行管理操作的客户端程序,可以用来检查服务器的配置和当前状态、创建并删除数据库等。
# 查看全部可用选项
mysqladmin --help
# 常用操作
mysqladmin -uroot -p123456 version # 查看版本信息
mysqladmin -uroot -p123456 status # 简短状态信息
mysqladmin -uroot -p123456 ping # 检查服务是否存活
mysqladmin -uroot -p123456 processlist # 查看当前活动线程
mysqladmin -uroot -p123456 create test01 # 创建数据库
mysqladmin -uroot -p123456 drop test01 # 删除数据库
| 选项 | 作用 |
|---|---|
create database_name | 创建数据库 |
drop database_name | 删除数据库及其所有表 |
extended-status | 输出服务器扩展状态信息 |
flush-hosts / flush-logs / flush-tables | 清理缓存主机 / 刷新日志 / 刷新表 |
flush-status | 清空状态变量 |
kill id,id,... | 杀掉指定线程 |
password [new-password] | 修改当前用户密码 |
ping | 检查服务是否存活 |
processlist | 显示活动线程列表 |
reload / refresh | 重新加载授权表 / 刷新表并重开日志 |
shutdown | 关闭服务器 |
status | 简短状态信息 |
variables | 打印可用变量 |
version | 获取版本信息 |
shutdown、drop属于高危操作,生产环境先确认实例和库名。
三、mysqlbinlog(二进制日志查看)
服务器生成的二进制日志文件以二进制格式保存,如果想查看其文本格式,就要用 mysqlbinlog 日志管理工具。
mysqlbinlog [options] log-files1 log-files2 ...
| 选项 | 含义 |
|---|---|
-d, --database=name | 指定数据库名称,只列出指定数据库相关操作 |
-o, --offset=# | 忽略日志中的前 n 行命令 |
-r, --result-file=name | 将输出的文本格式日志输出到指定文件 |
-s, --short-form | 显示简单格式,省略一些信息 |
--start-datetime=date1 --stop-datetime=date2 | 指定日期间隔内的所有日志 |
--start-position=pos1 --stop-position=pos2 | 指定位置间隔内的所有日志 |
# 查看 binlog 内容(文本形式)
mysqlbinlog -v /var/lib/mysql/binlog.000001
# 只看指定库、指定时间段的日志
mysqlbinlog -d itcast --start-datetime="2026-10-25 09:00:00" \
--stop-datetime="2026-10-25 12:00:00" /var/lib/mysql/binlog.000001
前提是服务端已开启 binlog(
log_bin = ON);ROW格式下需加-v才能看到具体行的变更。
四、mysqlshow(对象查找)
mysqlshow 客户端对象查找工具,用来快速查找存在哪些数据库、数据库中的表、表中的列或者索引。
mysqlshow [options] [db_name [table_name [col_name]]]
| 选项 | 含义 |
|---|---|
--count | 显示数据库及表的统计信息(数据库、表均可以不指定) |
-i | 显示指定数据库或者指定表的状态信息 |
# 每个数据库的表的数量及表中记录的数量
mysqlshow -uroot -p2143 --count
# test 库中每个表的字段数及行数
mysqlshow -uroot -p2143 test --count
# test 库中 book 表的详细情况
mysqlshow -uroot -p2143 test book --count
速查
# 客户端:执行 SQL 后退出(适合脚本)
mysql -uroot -p123456 db01 -e "select * from stu";
# 管理:版本 / 状态 / 存活 / 建库 / 删库
mysqladmin -uroot -p123456 version
mysqladmin -uroot -p123456 status
mysqladmin -uroot -p123456 ping
mysqladmin -uroot -p123456 create test01
mysqladmin -uroot -p123456 drop test01
# 二进制日志:文本查看,可按库 / 时间 / 位置过滤
mysqlbinlog -v /var/lib/mysql/binlog.000001
mysqlbinlog -d itcast --start-position=4 --stop-position=1200 /var/lib/mysql/binlog.000001
# 对象查找:库 / 表 / 字段的统计信息
mysqlshow -uroot -p2143 --count
mysqlshow -uroot -p2143 test --count
mysqlshow -uroot -p2143 test book --count
| 工具 | 一句话 |
|---|---|
mysql | 客户端,-e 执行 SQL 并退出 |
mysqladmin | 管理:状态、建库删库、关服务 |
mysqlbinlog | 把二进制日志转成文本查看 |
mysqlshow | 查库、表、字段的统计信息 |
相关
- MySQL 系统数据库:
information_schema/performance_schema - 数据备份与导入导出:
mysqldump、mysqlimport、source - MySQL 基础:客户端连接与环境变量
- SQL DCL 数据控制语言:用户与权限