MySQL user权限表详解
user 表是 MySQL 中最重要的一个权限表,用来记录允许连接到服务器的账号信息。需要注意的是,在 user 表里启用的所有权限都是全局级的,适用于所有数据库。
user 表中的字段大致可以分为 4 类,分别是用户列、权限列、安全列和资源控制列,下面主要介绍这些字段的含义。
用户列
用户列存储了用户连接 MySQL 数据库时需要输入的信息。需要注意的是 MySQL 5.7 版本不再使用 Password 来作为密码的字段,而改成了 authentication_string。MySQL 5.7 版本的用户列如表 1 所示。
字段名 | 字段类型 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|
Host | char(60) | NO | 无 | 主机名 |
User | char(32) | NO | 无 | 用户名 |
authentication_string | text | YES | 无 | 密码 |
用户登录时,如果这 3 个字段同时匹配,MySQL 数据库系统才会允许其登录。创建新用户时,也是设置这 3 个字段的值。修改用户密码时,实际就是修改 user 表的 authentication_string 字段的值。因此,这 3 个字段决定了用户能否登录。
权限列
权限列的字段决定了用户的权限,用来描述在全局范围内允许对数据和数据库进行的操作。权限大致分为两大类,分别是高级管理权限和普通权限:
高级管理权限主要对数据库进行管理,例如关闭服务的权限、超级权限和加载用户等;
普通权限主要操作数据库,例如查询权限、修改权限等。
user 表的权限列包括 Select_priv、Insert_ priv 等以 priv 结尾的字段,这些字段值的数据类型为 ENUM,可取的值只有 Y 和 N:Y 表示该用户有对应的权限,N 表示该用户没有对应的权限。从安全角度考虑,这些字段的默认值都为 N。
字段名 | 字段类型 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|
Select_priv | enum('N','Y') | NO | N | 是否可以通过SELECT 令查询数据 |
Insert_priv | enum('N','Y') | NO | N | 是否可以通过 INSERT 令插入数据 |
Update_priv | enum('N','Y') | NO | N | 是否可以通过UPDATE 令修改现有数据 |
Delete_priv | enum('N','Y') | NO | N | 是否可以通过DELETE 令删除现有数据 |
Create_priv | enum('N','Y') | NO | N | 是否可以创建新的数据库和表 |
Drop_priv | enum('N','Y') | NO | N | 是否可以删除现有数据库和表 |
Reload_priv | enum('N','Y') | NO | N | 是否可以执行刷新和重新加载MySQL所用的各种内部缓存的特定令,包括日志、权限、主机、查询和表 |
Shutdown_priv | enum('N','Y') | NO | N | 是否可以关闭MySQL服务器。将此权限提供给root账户之外的任何用户时,都应当非常谨慎 |
Process_priv | enum('N','Y') | NO | N | 是否可以通过SHOW PROCESSLIST令查看其他用户的进程 |
File_priv | enum('N','Y') | NO | N | 是否可以执行SELECT INTO OUTFILE和LOAD DATA INFILE令 |
Grant_priv | enum('N','Y') | NO | N | 是否可以将自己的权限再授予其他用户 |
References_priv | enum('N','Y') | NO | N | 是否可以创建外键约束 |
Index_priv | enum('N','Y') | NO | N | 是否可以对索引进行增删查 |
Alter_priv | enum('N','Y') | NO | N | 是否可以重名和修改表结构 |
Show_db_priv | enum('N','Y') | NO | N | 是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库 |
Super_priv | enum('N','Y') | NO | N | 是否可以执行某些强大的管理功能,例如通过KILL令删除用户进程;使用SET GLOBAL令修改全局MySQL变量,执行关于和日志的各种令。(超级权限) |
Create_tmp_table_priv | enum('N','Y') | NO | N | 是否可以创建临时表 |
Lock_tables_priv | enum('N','Y') | NO | N | 是否可以使用LOCK TABLES令阻止对表的访问/修改 |
Execute_priv | enum('N','Y') | NO | N | 是否可以执行存储过程 |
Repl_slave_priv | enum('N','Y') | NO | N | 是否可以读取用于维护数据库环境的二进制日志文件 |
Repl_client_priv | enum('N','Y') | NO | N | 是否可以确定从服务器和主服务器的位置 |
Create_view_priv | enum('N','Y') | NO | N | 是否可以创建视图 |
Show_view_priv | enum('N','Y') | NO | N | 是否可以查看视图 |
Create_routine_priv | enum('N','Y') | NO | N | 是否可以更改或放弃存储过程和函数 |
Alter_routine_priv | enum('N','Y') | NO | N | 是否可以修改或删除存储函数及函数 |
Create_user_priv | enum('N','Y') | NO | N | 是否可以执行CREATE USER令,这个令用于创建新的MySQL账户 |
Event_priv | enum('N','Y') | NO | N | 是否可以创建、修改和删除事件 |
Trigger_priv | enum('N','Y') | NO | N | 是否可以创建和删除触发器 |
Create_tablespace_priv | enum('N','Y') | NO | N | 是否可以创建表空间 |
如果要修改权限,可以使用 GRANT 语句为用户赋予一些权限,也可以通过 UPDATE 语句更新 user 表的方式来设置权限。
安全列
安全列主要用来判断用户是否能够登录成功,user 表中的安全列如表 3 所示:字段名 | 字段类型 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|
ssl_type | enum('','ANY','X509','SPECIFIED') | NO |
| 支持ssl标准加密安全字段 |
ssl_cipher | blob | NO |
| 支持ssl标准加密安全字段 |
x509_issuer | blob | NO |
| 支持x509标准字段 |
x509_subject | blob | NO |
| 支持x509标准字段 |
plugin | char(64) | NO | mysql_native_password | 引入plugins以进行用户连接时的密码验证,plugin创建外部/代理用户 |
password_expired | enum('N','Y') | NO | N | 密码是否过期 (N 未过期,y 已过期) |
password_last_changed | timestamp | YES |
| 记录密码最近修改的时间 |
password_lifetime | allint(5) unsigned | YES |
| 设置密码的有效时间,单位为天数 |
account_locked | enum('N','Y') | NO | N | 用户是否被锁定(Y 锁定,N 未锁定) |
注意:即使 password_expired 为“Y”,用户也可以使用密码登录 MySQL,但是不允许做任何操作。
通常标准的发行版不支持 ssl,读者可以使用 SHOW VARIABLES LIKE "have_openssl" 语句来查看是否具有 ssl 功能。如果 have_openssl 的值为 DISABLED,那么则不支持 ssl 加密功能。
资源控制列
资源控制列的字段用来限制用户使用的资源,user 表中的资源控制列如表 4 所示。字段名 | 字段类型 | 是否为空 | 默认值 | 说明 |
|---|---|---|---|---|
max_questions | int(11) unsigned | NO | 0 | 规定每小时允许执行查询的操作次数 |
max_updates | int(11) unsigned | NO | 0 | 规定每小时允许执行更新的操作次数 |
max_connections | int(11) unsigned | NO | 0 | 规定每小时允许执行的连接操作次数 |
max_user_connections | int(11) unsigned | NO | 0 | 规定允许同时建立的连接次数 |
以上字段的默认值为 0,表示没有限制。一个小时内用户查询或者连接数量超过资源控制限制,用户将被锁定,直到下一个小时才可以在此执行对应的操作。可以使用 GRANT 语句更新这些字段的值。
- 随机文章
- 中国 马尔代夫 巡航(中国船只驶入马尔代夫海域展开巡航)
- 中国版本马尔代夫(重返美丽马尔代夫,畅享热带海岛风光)
- 儿童 马尔代夫 证件(儿童马尔代夫行需注意证件问题)
- 马尔代夫鲨鱼爸爸(鲨鱼爸爸在马尔代夫:守护家庭巢穴)
- 亚洲马尔代夫价格(亚洲马尔代夫:经济实惠的旅游目的地)
- 南海马尔代夫公司(南海与马尔代夫公司合作开展旅游业务)
- 帆船 马尔代夫(驾帆船探索马尔代夫之美)
- 巴黎岛与马尔代夫(重新发现热带天堂:巴黎岛与马尔代夫)
- 嘉鱼马尔代夫现状(嘉鱼——风情万种的马尔代夫旅游胜地)
- 缅甸 马尔代夫(缅甸与马尔代夫加强合作)
- 宜兴马尔代夫游泳(体验海底世界,畅游宜兴公园水上乐园)
- 国际大师马尔代夫(国际象棋大师们远赴马尔代夫参加比赛)
- 惠州马尔代夫海岛(惠州即将建设仿马尔代夫海岛度假胜地)
- 厦门 马尔代夫 机票(厦门至马尔代夫机票购买指南)
- 清远 马尔代夫(清远市民前往马尔代夫旅游攻略)
- 山东张庄马尔代夫(山东张庄聘请马尔代夫为旅游咨询顾问)
- 小马尔代夫明斯克(小马尔代夫出现明斯克症状,引发担忧)
- 接待马尔代夫总统(马尔代夫总统访华,与习近平举行会谈)
- 济宁马尔代夫游玩(济宁市民畅游马尔代夫,探访世外桃源)
- 美国统治马尔代夫(美国施压下,马尔代夫被迫接受统治?)
- 南海填成马尔代夫(马尔代夫将填海造岛,提升旅游业发展)
- 越南东方马尔代夫(越南“东方海上度假胜地”:旅游新宠)
- 武汉马尔代夫景点(武汉市民可以在当地玩转马尔代夫风光)
- 海滩旅游马尔代夫(马尔代夫:享受海滩旅游的绝佳目的地)
- 美元 马尔代夫(马尔代夫旅游业重启推升美元汇率)
- 河南辉县马尔代夫(河南辉县旅游推荐:体验马尔代夫风情)
- 深圳马尔代夫海岛(深圳巨星马尔代夫私人岛:度假新体验)
- 韩国马尔代夫旅游(韩媒:韩国游客前往马尔代夫旅游激增)
- 宜昌 马尔代夫(宜昌游客可免签前往马尔代夫,享受海岛度假)
- 马尔代夫亚明法院(马尔代夫亚明法院审理鲸鲨牙贩卖案件)
