0%

MySQL information_schema数据库

information_schema 这这个数据库中保存了 MySQL 服务器所有数据库的信息。
如数据库名,数据库的表,表栏的数据类型与访问权限等。
再简单点,这台 MySQL 服务器上,到底有哪些数据库、各个数据库有哪些表,
每张表的字段类型是什么,各个数据库要什么权限才能访问,等等信息都保存在 information_schema 里面。

选用 MySQL 版本 5.6.25

1
2
3
4
5
6
7
select version();
+------------+
| version() |
+------------+
| 5.6.25-log |
+------------+
1 row in set (0.00 sec)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
use information_schema;
show tables;
+---------------------------------------+
| Tables_in_information_schema |
+---------------------------------------+
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| ENGINES |
| EVENTS |
| FILES |
| GLOBAL_STATUS |
| GLOBAL_VARIABLES |
| KEY_COLUMN_USAGE |
| OPTIMIZER_TRACE |
| PARAMETERS |
| PARTITIONS |
| PLUGINS |
| PROCESSLIST |
| PROFILING |
| REFERENTIAL_CONSTRAINTS |
| ROUTINES |
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| SESSION_STATUS |
| SESSION_VARIABLES |
| STATISTICS |
| TABLES |
| TABLESPACES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
| INNODB_LOCKS |
| INNODB_TRX |
| INNODB_SYS_DATAFILES |
| INNODB_LOCK_WAITS |
| INNODB_SYS_TABLESTATS |
| INNODB_CMP |
| INNODB_METRICS |
| INNODB_CMP_RESET |
| INNODB_CMP_PER_INDEX |
| INNODB_CMPMEM_RESET |
| INNODB_FT_DELETED |
| INNODB_BUFFER_PAGE_LRU |
| INNODB_SYS_FOREIGN |
| INNODB_SYS_COLUMNS |
| INNODB_SYS_INDEXES |
| INNODB_FT_DEFAULT_STOPWORD |
| INNODB_SYS_FIELDS |
| INNODB_CMP_PER_INDEX_RESET |
| INNODB_BUFFER_PAGE |
| INNODB_CMPMEM |
| INNODB_FT_INDEX_TABLE |
| INNODB_FT_BEING_DELETED |
| INNODB_SYS_TABLESPACES |
| INNODB_FT_INDEX_CACHE |
| INNODB_SYS_FOREIGN_COLS |
| INNODB_SYS_TABLES |
| INNODB_BUFFER_POOL_STATS |
| INNODB_FT_CONFIG |
+---------------------------------------+
59 rows in set (0.01 sec)

information_schema 数据库中有 59 张表, 分别存储了如下的信息:
参考官方文档

| SCHEMATA | 提供了当前 mysql 实例中所有数据库的信息,show databases 的结果取之此表。 |
| ————————————- | ——————————————————————————————————————————————————- | ———————————————————————————— |
| TABLES | 提供了关于数据库中的表的信息(包括视图),详细表述了某个表属于哪个 schema,表类型,表引擎,创建时间等信息,show tables from schemaname 的结果取之此表。 |
| COLUMNS | 提供了表中的列信息,详细表述了某张表的所有列以及每个列的信息,show columns from schemaname.tablename 的结果取之此表。 |
| STATISTICS | 提供了关于表索引的信息,show index from schemaname.tablename 的结果取之此表。 |
| USER_PRIVILEGES(用户权限) | 给出了关于全程权限的信息,该信息源自 mysql.user 授权表,是非标准表。 |
| SCHEMA_PRIVILEGES(方案权限) | 给出了关于方案(数据库)权限的信息,该信息来自 mysql.db 授权表,是非标准表。 |
| TABLE_PRIVILEGES(表权限) | 给出了关于表权限的信息,该信息源自 mysql.tables_priv 授权表,是非标准表。 |
| COLUMN_PRIVILEGES(列权限) | 给出了关于列权限的信息,该信息源自 mysql.columns_priv 授权表,是非标准表。 |
| CHARACTER_SETS(字符集) | 提供了 mysql 实例可用字符集的信息,SHOW CHARACTER SET 结果集取之此表。 |
| COLLATIONS | 提供了关于各字符集的对照信息。 |
| COLLATION_CHARACTER_SET_APPLICABILITY | 指明了可用于校对的字符集,这些列等效于 SHOW COLLATION 的前两个显示字段。 |
| TABLE_CONSTRAINTS | 描述了存在约束的表,以及表的约束类型。 |
| KEY_COLUMN_USAGE | 描述了具有约束的键列。 |
| ROUTINES | 提供了关于存储子程序(存储程序和函数)的信息,此时,ROUTINES 表不包含自定义函数(UDF),名为 | “mysql.proc name”的列指明了对应于 INFORMATION_SCHEMA.ROUTINES 表的 mysql.proc 表列。 |
| VIEWS | 给出了关于数据库中的视图的信息,需要有 show views 权限,否则无法查看视图信息。 |
| TRIGGERS | 提供了关于触发程序的信息,必须有 super 权限才能查看该表。 |

information_schema 的表 schemata 中的列 schema_name 记录了所有数据库的名字
information_schema 的表 tables 中的列 table_schema 记录了所有数据库的名字
information_schema 的表 tables 中的列 table_name 记录了所有数据库的表的名字
information_schema 的表 columns 中的列 table_schema 记录了所有数据库的名字
information_schema 的表 columns 中的列 table_name 记录了所有数据库的表的名字
information_schema 的表 columns 中的列 column_name 记录了所有数据库的表的列的名字