本文详述 MySQL 的系统数据库功能及常见工具的简单用法,并提供具体指令解析。
1. 系统数据库
MySQL 默认提供四个系统数据库,每个数据库都有特定的功能。下表总结了它们的作用:
数据库名 | 作用 |
---|---|
mysql | 存储数据库用户、权限、角色等管理信息。如 user 表记录用户信息,db 表定义数据库的访问权限。 |
information_schema | 提供数据库元数据的只读视图,如表、列、权限、统计信息等。 |
performance_schema | 提供性能监控和诊断信息,包括 SQL 执行延迟、IO 操作统计等,便于优化数据库性能。 |
sys | 基于 performance_schema 提供的视图,简化性能数据查询,更适合运维人员使用。 |
2. 常见工具
2.1 mysql 工具
作用
提供 MySQL 客户端交互环境,支持运行 SQL 查询、管理数据库和用户权限。
常用指令
命令 | 描述 |
---|---|
mysql -u <user> -p |
登录 MySQL 数据库。 |
SHOW DATABASES; |
查看所有数据库。 |
USE <database>; |
切换到指定数据库。 |
SHOW TABLES; |
查看当前数据库的所有表。 |
SELECT * FROM <table>; |
查询指定表的数据。 |
2.2 mysqldump 工具
作用
用于备份数据库或表数据。
语法
sql
mysqldump [options] db_name [tables]
mysqldump [options] --database/-B db1 [db2 db3...]
mysqldump [options] --all-databases/-A
连接选项
选项 | 描述 |
---|---|
-u, --user=name |
指定用户名。 |
-p, --password[=name] |
指定密码。 |
-h, --host=name |
指定服务器 IP 或域名。 |
-P, --port=# |
指定连接端口。 |
输出选项
选项 | 描述 |
---|---|
--add-drop-database |
在每个数据库创建语句前添加 DROP DATABASE 语句。 |
--add-drop-table |
在每个表创建语句前添加 DROP TABLE 语句,默认开启。禁用可用 --skip-add-drop-table 。 |
-n, --no-create-db |
不包含数据库的创建语句。 |
-t, --no-create-info |
不包含数据表的创建语句。 |
-d, --no-data |
只备份表结构,不包含数据。 |
-T, --tab=name |
自动生成两个文件:一个 .sql 文件用于创建表结构,一个 .txt 文件保存数据内容。 |
案例
sql
# 备份单个数据库
mysqldump -u root -p test > test_backup.sql
# 备份多个数据库
mysqldump -u root -p --databases test db1 db2 > multiple_backup.sql
# 备份所有数据库
mysqldump -u root -p --all-databases > all_backup.sql
# 只备份 test 数据库的表结构
mysqldump -u root -p -d test > test_structure.sql
2.3 mysqladmin 工具
作用
管理 MySQL 服务,执行管理任务如查看服务器状态、重启服务等。
常用指令
命令 | 描述 |
---|---|
mysqladmin -u <user> -p status |
查看服务器状态,包括线程数、查询数等信息。 |
mysqladmin shutdown |
关闭 MySQL 服务。 |
mysqladmin processlist |
查看当前执行的查询。 |
案例
sql
# 查看服务器状态
mysqladmin -u root -p status
# 关闭 MySQL 服务
mysqladmin -u root -p shutdown
2.4 mysqlbinlog 工具
作用
解析和查看二进制日志,常用于故障恢复和主从同步。
常用指令
命令 | 描述 |
---|---|
mysqlbinlog <binlog_file> |
查看二进制日志内容。 |
mysqlbinlog --start-datetime="..." |
从指定时间开始解析日志内容。 |
mysqlbinlog --start-position=... |
从指定位置解析日志内容。 |
案例
sql
# 查看指定二进制日志内容
mysqlbinlog mysql-bin.000001
# 从指定时间解析日志
mysqlbinlog --start-datetime="2024-01-01 10:00:00" mysql-bin.000001
2.5 mysqlshow 工具
作用
显示数据库、表及列等元数据。
常用指令
命令 | 描述 |
---|---|
mysqlshow |
显示所有数据库。 |
mysqlshow <database> |
显示指定数据库中的表。 |
mysqlshow <database> <table> |
显示指定表的列信息。 |
案例
sql
# 显示所有数据库
mysqlshow
# 显示 test 数据库的所有表
mysqlshow test
# 显示 students 表的结构
mysqlshow test students
2.6 mysqlimport 和 source
mysqlimport 工具
作用:快速导入数据文件到 MySQL 数据表。
案例
sql
# 导入 students.csv 到 test 数据库的 students 表
mysqlimport --local -u root -p test students.csv
source 命令
作用:在 MySQL 客户端执行 SQL 文件。
案例
sql
# 加载备份文件
source /path/to/backup.sql;
3. 总结
- 系统数据库 提供数据库管理的基础。
- 常见工具 为用户高效管理数据库和数据提供了丰富功能。