mysql怎么管理权限 mysql如何设置权限( 五 )


5、收回权限
收回权限就是取消已经赋予用户的某些权限 。收回用户不必要的权限可以在一定程度上保证系统的安全 性 。MySQL中使用 REVOKE语句 取消用户的某些权限 。使用REVOKE收回权限之后 , 用户账户的记录将从 db、host、tables_priv和columns_priv表中删除 , 但是用户账户记录仍然在user表中保存(删除user表中 的账户记录使用DROP USER语句) 。注意:在将用户账户从user表删除之前,应该收回相应用户的所有权限 。
REVOKE 权限1,权限2,…权限n ON 数据库名称.表名称 FROM 用户名@用户地址;
比如
#收回全库全表的所有权限
REVOKE ALL PRIVILEGES ON *.* FROM joe@'%';
#收回mysql库下的所有表的插删改查权限
REVOKE SELECT,INSERT,UPDATE,DELETE ON mysql.* FROM joe@localhost;
注意: 须用户重新登录后才能生效
三、权限表
1、user表
user表是MySQL中最重要的一个权限表, 记录用户账号和权限信息 ,有49个字段 。如下图:
这些字段可以分成4类,分别是范围列(或用户列)、权限列、安全列和资源控制列
范围列(或用户列)
权限列
安全列
安全列只有6个字段,其中两个是ssl相关的(ssl_type、ssl_cipher),用于 加密 ;两个是x509 相关的(x509_issuer、x509_subject),用于 标识用户 ;另外两个Plugin字段用于 验证用户身份 的插件,该字段不能为空 。如果该字段为空 , 服务器就使用内建授权验证机制验证用户身份 。
资源控制列
资源控制列的字段用来 限制用户使用的资源  , 包含4个字段,分别为: ①max_questions,用户每小时允许执行的查询操作次数; ②max_updates,用户每小时允许执行的更新 操作次数; ③max_connections , 用户每小时允许执行的连接操作次数; ④max_user_connections,用户 允许同时建立的连接次数 。查看字段:
DESC mysql.user;
查看用户, 以列的方式显示数据: SELECT * FROM mysql.user \G;
查询特定字段:
SELECT host,user,authentication_string,select_priv,insert_priv,drop_priv
FROM mysql.user;
2、db表
使用DESCRIBE查看db表的基本结构: DESCRIBE mysql.db;
1. 用户列 db表用户列有3个字段,分别是Host、User、Db 。这3个字段分别表示主机名、用户名和数据库 名 。表示从某个主机连接某个用户对某个数据库的操作权限,这3个字段的组合构成了db表的主键 。
2. 权限列 Create_routine_priv和Alter_routine_priv这两个字段决定用户是否具有创建和修改存储过程的权限 。
3、 tables_priv表和columns_priv表
tables_priv表用来 对表设置操作权限 ,columns_priv表用来对表的 某一列设置权限。tables_priv表和 columns_priv表的结构分别如图: desc mysql.tables_priv;
tables_priv表有8个字段 , 分别是Host、Db、User、Table_name、Grantor、Timestamp、Table_priv和 Column_priv , 各个字段说明如下:
Host 、 Db 、 User 和 Table_name 四个字段分别表示主机名、数据库名、用户名和表名 。
Grantor表示修改该记录的用户 。
Timestamp表示修改该记录的时间 。
Table_priv 表示对象的操作权限 。包括Select、Insert、Update、Delete、Create、Drop、Grant、
References、Index和Alter 。
Column_priv字段表示对表中的列的操作权限,包括Select、Insert、Update和References 。
desc mysql.columns_priv;
4、 procs_priv表
procs_priv表可以对 存储过程和存储函数设置操作权限,表结构如图: desc mysql.procs_priv;
四、访问控制
1、连接核实阶段
当用户试图连接MySQL服务器时 , 服务器基于用户的身份以及用户是否能提供正确的密码验证身份来确 定接受或者拒绝连接 。即客户端用户会在连接请求中提供用户名、主机地址、用户密码 , MySQL服务器 接收到用户请求后,会使用user表中的host、user和authentication_string这3个字段匹配客户端提供信 息 。服务器只有在user表记录的Host和User字段匹配客户端主机名和用户名,并且提供正确的密码时才接受 连接 。如果连接核实没有通过,服务器就完全拒绝访问;否则 , 服务器接受连接,然后进入阶段2等待 用户请求 。

推荐阅读