mysql
,用于存储系统信息和用户权限等。MySQL数据库默认包含几个系统数据库,这些数据库在数据库安装完成后会自动创建,它们分别是information_schema、performance_schema、mysql和sys,每个系统数据库都有其特定的用途和存储的数据类型。
1、information_schema:这是一个虚拟数据库,提供了关于其他数据库的元数据,包括表、列、用户等的信息,它不是实际存储数据的数据库,而是提供一种查询数据库结构的方式,通过查询INFORMATION_SCHEMA.TABLES
可以获取所有数据库中的表信息。
2、performance_schema:此数据库用于收集性能相关的统计信息,以帮助开发者和数据库管理员分析MySQL的运行状态,它包含了诸如锁等待时间、连接数等性能指标。
3、mysql:这个数据库是MySQL的核心数据库,存储了MySQL服务器的用户权限、用户登录信息及其他系统相关的表格。user
表存储了用户账户和权限信息,db
表存储了数据库的权限信息。
4、sys:这是一个较新的数据库,提供了一系列视图,旨在简化performance_schema和information_schema中数据的访问,以便于进行性能分析和问题诊断。
以下是各个系统数据库的主要表及其功能:
数据库名称 | 表名 | 功能描述 |
information_schema | SCHEMATA | 提供当前实例中所有数据库的信息 |
TABLES | 提供关于数据库中的表的信息(包括视图) | |
COLUMNS | 提供表中的列信息 | |
STATISTICS | 提供关于表索引的信息 | |
USER_PRIVILEGES | 给出全程权限的信息 | |
SCHEMA_PRIVILEGES | 给出方案(数据库)权限的信息 | |
TABLE_PRIVILEGES | 给出表权限的信息 | |
COLUMN_PRIVILEGES | 给出列权限的信息 | |
CHARACTER_SETS | 提供实例可用字符集的信息 | |
COLLATIONS | 提供关于各字符集的对照信息 | |
COLLATION_CHARACTER_SET_APPLICABILITY | 指明可用于校对的字符集 | |
TABLE_CONSTRAINTS | 描述存在约束的表以及表的约束类型 | |
KEY_COLUMN_USAGE | 描述具有约束的键列 | |
ROUTINES | 提供关于存储子程序(存储程序和函数)的信息 | |
VIEWS | 给出关于数据库中的视图的信息 | |
TRIGGERS | 提供关于触发程序的信息 | |
performance_schema | events_waits_summary_by_instance | 记录当前正在发生的等待事件,只读表,不能update/delete,但可truncate |
setup_consumers | 描述各种事件 | |
setup_instruments | 描述这个数据库下的表名以及是否开启监控 | |
setup_timers | 描述监控选项已经采样频率的时间间隔 | |
file_summary_by_event_name | 文件摘要信息 | |
events_waits_current | 记录当前正在发生的等待事件,只读表,不能update/delete,但可truncate | |
events_waits_history | 性能历史表,只保留每个线程最近的10个事件,标准FIFO | |
events_waits_history_long | 性能历史表,记录最近的10000个事件 | |
mysql | user | 存储用户账户和权限信息 |
db | 存储数据库的权限信息 | |
tables_priv | 存储表的权限信息 | |
columns_priv | 存储列的权限信息 | |
procs_priv | 存储存储过程和函数的权限信息 | |
proxies_priv | 存储代理用户的权限信息 | |
sys | sys.tables | 提供关于系统表的信息 |
sys.session | 提供会话级别的信息 | |
sys.statement_analysis | 提供SQL语句的分析信息 |
相关FAQs
Q1: 如何查看所有用户?
A1: 你可以使用以下查询来查看所有用户:
- SELECT user, host FROM mysql.user;
Q2: 如何授予用户权限?
A2: 你可以使用以下命令来授予用户权限:
- GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost';
- FLUSH PRIVILEGES;
小编有话说
了解MySQL的默认数据库和表对于有效管理和维护数据库至关重要,通过掌握这些系统数据库的功能和用法,你可以更好地优化数据库性能,确保数据安全,并进行高效的故障排查,希望本文能为你提供有价值的参考,帮助你在MySQL数据库管理中更加得心应手,如果你有任何疑问或需要进一步的帮助,请随时留言讨论。