-
Notifications
You must be signed in to change notification settings - Fork 111
user
- 该表提供查询全局权限信息,该表中的帐号密码信息在认证1阶段决定着是否允许用户连接,对于通过帐号密码认证阶段的连接,如果同时通过user表中的权限检查,那么就代表着该用户拥有全局权限,该表中记录的权限信息代表着用户是否拥有该实例下所有数据库的相应全局权限
- 注意:在user表中有任意一个权限列为Y的,就被认为拥有全局权限,所以用户在使用show databases或者使用information_schema的schemata表查询时,可以查询到所有数据库名称列表
- 表结构定义
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';
- 表字段含义
- host和user两个列官方称为范围列,可以理解为这两个字段构成了允许访问的客户端范围以及客户端可以访问的数据库资源范围(这里没有像db表那样的db字段限制库范围,可以理解为整个实例范围的数据库)
* host:代表允许用户从哪些主机访问数据库,可以用通配符和DNS
* user:用户名
- 权限列:从 Select_priv到Create_tablespace_priv及其之间的列,官方称为权限列,每一个列对应一个具体的权限,为Y代表有权限,为N代表没权限
- 以下列官方称为安全列,与客户端与服务端之间的安全、加密通讯有关
* ssl_type:如果用户配置了使用加密ssl连接,则该字段记录用户使用的加密证书类型
* ssl_cipher:表示用于SSL连接握手中可能使用到的密码列表
* x509_issuer:x509证书相关字段
* x509_subject:x509证书相关字段
* plugin:代表该用户使用的密码认证插件名称
* authentication_string:表示用户密码的md5加密字符串
* password_expired:表示用户密码是否过期,为Y试表示用户密码会过期,为N表示用户密码永不过期
* password_last_changed:表示用户密码的最近一次修改时间,该字段如果使用MySQL内建的认证插件(mysql_native_password or sha256_password)则该字段为非空,如果是使用外部认证插件则该字段为空,当使用MySQL内建的认证插件时,该字段初始值为CREATE USER、ALTER USER、SET PASSWORD、GRANT语句执行创建用户或者修改密码时的时间
* password_lifetime:如果password_expired字段为Y,则该字段记录该用户剩余的密码未过期天数,假设该字段值为N,则表示用户需要每N天修改一次密码。如果用户未单独指定该值,则使用全局系统变量default_password_lifetime的值代替。当该字段值为NULL且全局系统变量default_password_lifetime为0时或者该字段值为0时,表示该用户的密码永不过期
* account_locked:代表用户当前状态是锁定状态还是处于激活可用状态
- 以下列官方称为资源控制列,用于限制用户的一些访问资源
* max_questions:代表所有用户每小时的最大并发查询数
* max_updates:代表所有用户每小时最大并发更新次数
* max_connections:代表所有用户每小时的最大并发连接数
* max_user_connections:代表该行记录中的用户每小时的最大并发连接数
- 表记录内容示例
root@localhost : mysql 12:51:40> select * from mysql.user limit 1\G;
*************************** 1. row ***************************
Host: %
User: qfsys
Select_priv: Y
Insert_priv: N
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Show_db_priv: N
Super_priv: Y
Create_tmp_table_priv: N
Lock_tables_priv: Y
Execute_priv: N
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Create_user_priv: N
Event_priv: N
Trigger_priv: N
Create_tablespace_priv: N
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin: mysql_native_password
authentication_string: *3B3D7D2FD587C29C730F36CD52B4BA8CCF4C744F
password_expired: N
password_last_changed: 2017-07-01 14:37:32
password_lifetime: NULL
account_locked: N
1 row in set (0.00 sec)
上一篇:MySQL 常见连接问题 |下一篇:db表
- 验证、测试、整理:罗小波
- QQ:309969177
- 提示:本系列文章的主体结构遵循Oracle MySQL 官方 5.7 手册中,关于information_schema、mysql schema、performance_schema、sys schema的章节结构体系,并额外添加了一些验证、测试数据。鉴于本人精力和能力有限,难免出现一些纰漏,欢迎大家踊跃指正!