一、概述
Mysql5.7版本自带4个数据库,information_schema、mysql、performance_schema、sys。其中mysql库是MySQL的核心数据库,类似于sql server中的master表,它包含存储MySQL服务器运行时所需信息的表,mysql库共计31张表。主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。
二、mysql库表分类
- 授权信息系统表
- 对象信息系统表
- 日志系统表
- 服务器端帮助系统表
- 时区系统表
- 复制系统表
- 优化器系统表
- 杂项系统表
三、分类介绍
mysql库所有的表格引擎如果没有特殊说明均为MyISAM,不能修改为InnoDB,否则无法启动。
1、授权信息系统表
- user:用户帐户,全局特权和其他非特权列。
- db:数据库级特权。
- tables_priv:表级特权。
- columns_priv:列级特权。
- procs_priv:存储过程和函数特权。
- proxies_priv:代理用户权限。
2、对象信息系统表
- event:使用.NET安装的事件计划程序事件的注册表CREATE EVENT。如果使用该–skip-grant-tables选项启动服务器 ,则事件调度程序将被禁用,并且表中注册的事件不会运行。
- func:使用来安装用户定义功能(UDF)的注册表 CREATE FUNCTION。在正常启动过程中,服务器将加载在此表中注册的UDF。如果使用该–skip-grant-tables选项启动服务器 ,则表中注册的UDF不会被加载并且不可用。
- plugin:使用安装的服务器端插件的注册表INSTALL PLUGIN。在正常启动过程中,服务器将加载在此表中注册的插件。如果使用该–skip-grant-tables选项启动服务器 ,则表中注册的插件将不会加载且不可用。该plugin表在MySQL 5.7.6之前使用MyISAM存储引擎,之后使用InnoDB。
- proc:有关存储过程和功能的信息。
3、日志系统表
- general_log:一般查询日志表。
- slow_log:慢查询日志表。
4、服务器端帮助系统表
这些系统表包含服务器端帮助信息:
- help_category:有关帮助类别的信息。
- help_keyword:与帮助主题相关的关键字。
- help_relation:帮助关键字和主题之间的映射。
- help_topic:帮助主题内容。
在MySQL 5.7.5之前使用MyISAM存储引擎,之后使用InnoDB。
5、时区系统表
这些系统表包含时区信息:
- time_zone:时区ID以及它们是否使用leap秒。
- time_zone_leap_second:发生leap秒时。
- time_zone_name:时区ID和名称之间的映射。
- time_zone_transition, time_zone_transition_type:时区说明。
在MySQL 5.7.5之前使用MyISAM存储引擎,之后使用InnoDB。
6、 复制系统表
- gtid_executed:用于存储GTID值的表。该gtid_executed表使用 InnoDB存储引擎。
- ndb_binlog_index:NDB群集复制的二进制日志信息。在NDB 7.5.2之前,此表使用了 MyISAM存储引擎。在NDB 7.5.2和更高版本中,它使用 InnoDB。
- slave_master_info, slave_relay_log_info, slave_worker_info:用来存放复制的信息副本服务器上。所有这三个表都使用InnoDB 存储引擎。
7、优化器系统表
- innodb_index_stats, innodb_table_stats:用于 InnoDB持久性优化器统计信息。
- server_cost, engine_cost:优化程序成本模型使用的表包含有关查询执行期间发生的操作的成本估算信息。 server_cost包含用于一般服务器操作的优化程序成本估算。 engine_cost包含特定于特定存储引擎的操作的估计。
这些表使用InnoDB存储引擎。
8、杂项系统表
- audit_log_filter, audit_log_user如果安装了MySQL企业审计,这些表提供的审计日志筛选器定义和用户帐户永久存储。
- firewall_users, firewall_whitelist如果安装了MySQL企业级防火墙,这些表格提供了防火墙使用的信息永久存储。
- servers:由 FEDERATED存储引擎使用。在MySQL 5.7.6之前使用MyISAM存储引擎,之后使用InnoDB。
四、常用表user介绍
1、表结构
CREATE TABLE
user
(
Host
char(60) COLLATE utf8_bin NOT NULL DEFAULT ‘’,
User
char(32) COLLATE utf8_bin NOT NULL DEFAULT ‘’,
Select_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Insert_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Update_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Delete_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Create_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Drop_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Reload_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Shutdown_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Process_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
File_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Grant_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
References_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Index_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Alter_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Show_db_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Super_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Create_tmp_table_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Lock_tables_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Execute_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Repl_slave_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Repl_client_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Create_view_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Show_view_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Create_routine_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Alter_routine_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Create_user_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Event_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Trigger_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
Create_tablespace_priv
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
ssl_type
enum(’’,‘ANY’,‘X509’,‘SPECIFIED’) CHARACTER SET utf8 NOT NULL DEFAULT ‘’,
ssl_cipher
blob NOT NULL,
x509_issuer
blob NOT NULL,
x509_subject
blob NOT NULL,
max_questions
int(11) unsigned NOT NULL DEFAULT ‘0’,
max_updates
int(11) unsigned NOT NULL DEFAULT ‘0’,
max_connections
int(11) unsigned NOT NULL DEFAULT ‘0’,
max_user_connections
int(11) unsigned NOT NULL DEFAULT ‘0’,
plugin
char(64) COLLATE utf8_bin NOT NULL DEFAULT ‘mysql_native_password’,
authentication_string
text COLLATE utf8_bin,
password_expired
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
password_last_changed
timestamp NULL DEFAULT NULL,
password_lifetime
smallint(5) unsigned DEFAULT NULL,
account_locked
enum(‘N’,‘Y’) CHARACTER SET utf8 NOT NULL DEFAULT ‘N’,
PRIMARY KEY (Host
,User
)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=‘Users and global privileges’
2、重要字段
- Host 用于用户登录主机限制,%表示不限制
- User 账户用户名
- authentication_string 账户密码,修改该字段修改密码
- account_locked 是否锁定账户布尔变量。
- password_lifetime 账户密码过期时间,时间为倒计时
3、常用user表操作
查询数据库账户
>select user,host from mysql.user;
查询账户锁定账户
>select user,host,account_locked from mysql.user where account_locked=‘Y’;
修改账户密码
update mysql.user set authentication_string = password(‘123456’) where user = ‘root’ and host = ‘localhost’;