您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

mysql的权限表有哪些

2025/8/10 8:17:56发布21次查看
mysql的权限表有:1、user表,用来记录允许连接到服务器的账号信息,该表里启用的所有权限都是全局级的,适用于所有数据库;2、db表,存储了用户对某个数据库的操作权限;3、tables_priv表,用来对单个表进行权限设置;4、columns_priv表,用来对单个数据列进行权限设置;5、procs_priv表,用于对存储过程和存储函数进行权限设置。
本教程操作环境:windows7系统、mysql8版本、dell g3电脑。
在 mysql 数据库中,权限表有user 表、db 表、tables_priv 表、columns_priv 表和 procs_priv 表。
user权限表
user 表是 mysql 中最重要的一个权限表,用来记录允许连接到服务器的账号信息。需要注意的是,在 user 表里启用的所有权限都是全局级的,适用于所有数据库。
user 表中的字段大致可以分为 4 类,分别是用户列、权限列、安全列和资源控制列。
用户列
用户列存储了用户连接 mysql 数据库时需要输入的信息。需要注意的是 mysql 5.7 版本不再使用 password 来作为密码的字段,而改成了 authentication_string。
权限列
权限列的字段决定了用户的权限,用来描述在全局范围内允许对数据和数据库进行的操作。
权限大致分为两大类,分别是高级管理权限和普通权限:
高级管理权限主要对数据库进行管理,例如关闭服务的权限、超级权限和加载用户等;
普通权限主要操作数据库,例如查询权限、修改权限等。
user 表的权限列包括 select_priv、insert_ priv 等以 priv 结尾的字段,这些字段值的数据类型为 enum,可取的值只有 y 和 n:y 表示该用户有对应的权限,n 表示该用户没有对应的权限。从安全角度考虑,这些字段的默认值都为 n。
如果要修改权限,可以使用 grant 语句为用户赋予一些权限,也可以通过 update 语句更新 user 表的方式来设置权限。
安全列
安全列主要用来判断用户是否能够登录成功,user 表中的安全列如下表所示:
user 表的安全列字段名字段类型是否为空默认值说明
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 smallint(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 所示。
user 表的资源控制列字段名字段类型是否为空默认值说明
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 语句更新这些字段的值。
db表
db 表比较常用,是 mysql 数据库中非常重要的权限表,表中存储了用户对某个数据库的操作权限。表中的字段大致可以分为两类,分别是用户列和权限列。
用户列
db 表用户列有 3 个字段,分别是 host、user、db,标识从某个主机连接某个用户对某个数据库的操作权限,这 3 个字段的组合构成了 db 表的主键。
db 表的用户列如下表所示:
字段名字段类型是否为空默认值说明
host char(60) no 无 主机名
db char(64) no 无 数据库名
user char(32) no 无 用户名
权限列
db 表中的权限列和 user 表中的权限列大致相同,只是user 表中的权限是针对所有数据库的,而 db 表中的权限只针对指定的数据库。如果希望用户只对某个数据库有操作权限,可以先将 user 表中对应的权限设置为 n,然后在 db 表中设置对应数据库的操作权限。
tables_priv表和columns_priv表
tables_priv 表用来对单个表进行权限设置,columns_priv 表用来对单个数据列进行权限设置。tables_priv 表结构如下表所示:
字段名字段类型是否为空默认值说明
host char(60) no 无 主机
db char(64) no 无 数据库名
user char(32) no 无 用户名
table_name char(64) no 无 表名
grantor char(93) no 无 修改该记录的用户
timestamp timestamp no current_timestamp 修改该记录的时间
table_priv set('select','insert','update','delete','
create','drop','grant','references',
'index','alter','create view','show view','trigger') no 无 表示对表的操作权限,包括 select、insert、update、delete、create、drop、grant、references、index 和 alter 等
column_priv set('select','insert','update','references') no 无 表示对表中的列的操作权限,包括 select、insert、update 和 references
columns_priv 表结构如下表所示:
字段名字段类型是否为空默认值说明
host char(60) no 无 主机
db char(64) no 无 数据库名
user char(32) no 无 用户名
table_name char(64) no 无 表名
column_name char(64) no 无 数据列名称,用来指定对哪些数据列具有操作权限
timestamp timestamp no current_timestamp 修改该记录的时间
column_priv set('select','insert','update','references') no 无 表示对表中的列的操作权限,包括 select、insert、update 和 references
procs_priv表
procs_priv 表可以对存储过程和存储函数进行权限设置,procs_priv 的表结构如表所示:
字段名字段类型是否为空默认值说明
host char(60) no 无 主机名
db char(64) no 无 数据库名
user char(32) no 无 用户名
routine_name char(64) no 无 表示存储过程或函数的名称
routine_type enum('function','procedure') no 无 表示存储过程或函数的类型,routine_type 字段有两个值,分别是 function 和 procedure。function 表示这是一个函数;procedure 表示这是一个
存储过程。
grantor char(93) no 无 插入或修改该记录的用户
proc_priv set('execute','alter routine','grant') no 无 表示拥有的权限,包括 execute、alter routine、grant 3种
timestamp timestamp no current_timestamp 表示记录更新时间
【相关推荐:mysql视频教程】
以上就是mysql的权限表有哪些的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product