MySQL权限

来源:互联网 发布:unity3d专业版 编辑:程序博客网 时间:2024/04/28 20:55

mysql的权限系统基于验证和授权两个一般的概念。

一般的权限控制过程分为两个不同的阶段,连接验证和请求验证,大致分为五个步骤。

(1)mysql通过user表的记录来确定接受还是拒绝当前的连接请求。mysql还要确定用户是否需要安全连接,以及是否超出了该账户被允许的每小时最大连接数,执行完步骤(1),权限控制的验证阶段就结束了。

(2)步骤(2)开始权限控制过程的授权阶段,如果连接被接受,mysql就验证是否超出了该用户每小时被允许的最大查询或更新数,接下来,检查user表中授予的相应权限,如果启用了任何一种权限,用户则拥有对所有数据库的全局权限,这是按照被授予的权限进行操作。当然在权限配置完善的mysql系统上还需要检查被禁止的权限,这时候就产生了步骤(3)。

(3)检查db表,验证该用于允许与那些数据库交互,此表的任何权限都适应对应数据库的所有表。如果没有启用任何权限,但匹配一个用户并找到了一个主机值,则会直接执行步骤(5),如果找到一个匹配用户,但没有找到主机值,则会继续执行步骤(4)。

(4)如果db表中存在一条与该用户匹配的记录,但主机值为空,就检查host表,如果找到匹配的主机值,则用户对host表中指示的数据库而不是db表中的数据库有相应权限,这就允许对特定数据库实现特定主机的访问。

(5)最后,如果用户试图执行未在user,db,或host表中授予的命令,就要检查tables_priv和columns_priv表,确定该用户是否能够对所需的表或列执行该命令。

user表的Host列指定主机名,用来确定用户从哪个主机地址发起连接。

db表用于针对每个数据库为用户赋予的权限。

host表仅在db表的host字段为空时起作用,如果某个用户需要从多个主机访问,可以让db表的host字段为空。

tables_priv表用于存储表的特定用户权限。

columns_priv表存储列级权限。

0 0
原创粉丝点击