MySQL 访问控制实际上由两个功能模块独特构成,一个是卖力“把守 MySQL大门”的用户办理模块,另一个就是卖力监控来访者每一个行动的访问控制模块。用户治理模块抉择用户能否能上岸数据库,而访问控制模块则决意在数据库中详细能够做的事。下面是一张MySQL 中实现访问控制的简略流程图。

mysql访问控制怎么实现 mysql访问控制怎么实现的_数据库

1. 用户治理

在 MySQL中,用户访问控制局部的实现比较简单,全部受权用户都寄存在一个体系表中:mysql.user,固然这个表不仅仅寄存了受权用户的根基信息,还寄放有部份细化的权限信息。用户办理模块需求应用的信息很少,首要就是Host,User,Password这三项,都在 mysql.user 表中

mysql访问控制怎么实现 mysql访问控制怎么实现的_MySQL_02

2. 访问控制

当客户端毗邻经过用户经管模块的考证,可联接上 MySQL Server 以后,就会发送各类Query 和 Command 给 MySQLServer,以实现客户端利用的各类功用。当 MySQL接管到客户端的拜托以后,访问控制模块是必要校验该用户是不是知足提交的恳求所需求的权限。权限校验进程是从最大局限的权限往最小规模的权限起头顺次校验所触及到的每一个工具的每一个权限。

在考证全部所需权限的时刻,MySQL 起首会查找存储在内存布局中的权限数据,起首查找 Global Level 权限,要是所需权限在 GlobalLevel 都有界说(GRANT 大概 REVOKE),则完成权限校验(经过大概回绝),假如没有找到全部权限的界说,则会接续日后查找Database Level权限,举行 Global Level 未定义的所需权限的校验,假如仍旧没有可以找到一切所需权限的界说,MySQL 会持续往更小局限的权限定义域查找,也就是Table Level,末了则是 Column Level 大概 Routine Level。

3. 五个受权表

mysql数据库包括五个重要的受权表。user表:蕴含用户帐户和全局权限列。MySQL应用user表来接管或谢绝来自主机的衔接。在user表中付与的权限对MySQL服务器上的一切数据库都有用。

db表:蕴含数据库级权限。MySQL利用数据库表来肯定用户能够会见哪一个数据库以及谁人主机。在db表中的数据库级付与的特权实用于数据库,全部工具属于该数据库,比方表,触发器,视图,存储进程等。

table_priv和columns_priv表:包括表级和列级权限。在table_priv表中付与的权限合用于表及其列,而在columns_priv表中授与的权限仅实用于表的特定列。

procs_priv表:蕴含存储函数和存储历程的权限。

4. 参考会见受权战略

这里附一份我平常做mysql数据库受权的计谋,仅供参考。