说明
5.6版本自带的库为:information_schema、mysql、performance_schema、test
。
5.7版本自带库为:information_schema、mysql、performance_schema、sys
;
information_schema
information_schema提供了访问数据库元数据的方式。(元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有时用于表述该信息的其他术语包括“数据词典”和“系统目录”。)
换句换说,information_schema是一个信息数据库,它保存着关于MySQL服务器所维护的所有其他数据库的信息。(如数据库名,数据库的表,表栏的数据类型与访问权 限等。) 在INFORMATION_SCHEMA中,有几张只读表。它们实际上是视图,而不是基本表。
查看具体表:
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权限才能查看该表。
mysql
mysql的核心数据库,类似于sql server中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。(通常用户信息、修改用户的密码、删除用户及分配权限等就是在mysql数据库的user表中)。
用户列(用户连接MySQL数据库需要输入的信息)
Host:主机名,双主键之一,值为%时表示匹配所有主机。User:用户名,双主键之一。Password:密码名。
Host | User | Password |
---|---|---|
% | domain_check | *55B565DA3839E5955A68EA96EB735 |
localhost | domain_check | *55B565DA3839E5955A68EA96EB735 |
127.0.0.1 | domain_check | *55B565DA3839E5955A68EA96EB735 |
126.26.98.25 | domain_check | *55B565DA3839E5955A68EA96EB735 |
localhost | ||
::1 | root | *26C378D308851D5C717C13623EFD6 |
localhost | root | *26C378D308851D5C717C13623EFD6 |
127.0.0.1 | root | *26C378D308851D5C717C13623EFD6 |
(root,%),表示可以远程登录,并且是除服务器外的其他任何终端,%表示任意IP都可登录。
(root,localhost), 表示可以本地登录,即可以在服务器上登陆,localhost则只允许本地登录。
(root,127.0.0.1 ),表示可以本机登陆,即可以在服务器上登陆
(root,sv01),表示主机名为sv1可以登陆,sv01具体指的哪台机器,可以在cat /etc/hostname查看
(root,::1) , 表示本机可以登陆, 看密码都是相同嘛,具体::1代表意义,待查
在mysql数据库中,有mysql_install_db脚本初始化权限表,存储权限的表有:
1、user表: 用户列、权限列、安全列、资源控制列
2、db表 : 用户列、权限列
3、host表
4、table_priv表
5、columns_priv表
6、proc_priv表
PS: 要更改权限表的内容,推荐使用帐号管理语句(如:CREATE USER、GRANT、REVOKE等)来间接修改,不建议直接使用DML语句修改权限表,否则后果自负
performance_schema
主要用于收集数据库服务器性能参数。并且库里表的存储引擎均为PERFORMANCE_SCHEMA,而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。MySQL5.7默认是开启的。
setup_table :
设置表,配置监控选项。
current_events_table :
记录当前那些thread 正在发生什么事情。
history_table :
发生的各种事件的历史记录表
summary_table :
对各种事件的统计表
setup_consumers\ Setup_instruments :
描述各种事件, 设置哪些事件能够被收集
setup_instruments :
描述这个数据库下的表名以及是否开启监控。
setup_timers :
描述 监控选项已经采样频率的时间间隔
Threads :
监控服务器所有连接
Performance_timers :
设置一些监控信息, 指定mysql服务可用的监控周期,CYCLE表示按每秒检测2603393034次, 目前 performance-schema 只支持 ‘wait’ 时间的监控,代码树上 wait/ 下的函数都可以监控到。
sys
Sys库所有的数据源来自:performance_schema。目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容。让DBA更快的了解DB的运行情况。
test
test库在MySQL中特殊存在,一般部署完mysql后应当删除该库,并规定不能创建以test和test_字符开头的数据库。因为在mysql中,test库对任意用户都有管理员权限,因此,线上数据库不要用test。如果已有test,添加用户时想要禁止对test库的权限,可以在mysql.db表中添加这个新用户,禁止所有权限,或者删除该表中user为空的记录,并刷新权限
select * from mysql.db where db=‘test’ \G ; (\G代表竖的展示)
在测试用户权限时,也不要在test库中测试
参考文章:
https://www.cnblogs.com/xiaoerlaigeshao/p/10620088.html
https://blog.csdn.net/dj673344908/article/details/80482844