10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册 从本手册中摘录

MySQL 8.0参考手册/....../ 访问控制,第二阶段:请求验证

6.2.7访问控制,第2阶段:请求验证

服务器接受连接后,进入访问控制的第二阶段。对于您通过连接发出的每个请求,服务器确定您想执行什么操作,然后检查您的特权是否足够。这就是授予表中的特权列发挥作用的地方。这些特权可以来自任何用户global_grantsD btables_privcolumns_priv, 或者procs_priv.表。)参考一下可能会有帮助第6.2.3节,“授予表”,其中列出了每个授权表中存在的列。)

用户global_grants表格授予全局权限。对于给定帐户的这些表中的行表示无论默认数据库是什么,都会在全球范围内应用的帐户权限。例如,如果用户表格授予您删除特权,您可以从服务器主机上的任何数据库中的任何表中删除行。授予特权是明智的用户表仅提供给需要它们的人,如数据库管理员。对于其他用户,保留所有权限用户表设置为'n'并仅在更具体的级别(特定数据库,表,列或例程)授予权限。也可以在全球范围内授予数据库权限,但使用部分revikes来限制它们在特定数据库上行使(见第6.2.12节,“使用部分撤销的特权限制”).

D b表格授予特定于数据库特权。此表的范围列中的值可以采用以下形式:

  • 一个空白用户值与匿名用户匹配。非黑白价值匹配字面意思;用户名中没有通配符。

  • 通配符字符_可以用在主持人D b列。这些具有与模式匹配的模式匹配操作相同的含义与喜欢操作符。如果希望在授予特权时按字面意思使用任意一个字符,则必须使用反斜杠对其进行转义。例如,要包含下划线字符(_)作为数据库名称的一部分,将其指定为\ _在里面格兰特陈述。

  • 一种“%”或空白主持人价值手段任何主持人。

  • 一种“%”或空白D b价值手段任何数据库。

服务器读取D b表中的内存并同时对其进行读取用户表格服务器对D b表基于主持人D b, 和用户范围列。和我们一样用户表,排序将最特定于特定的值持续到最小的值,并且当服务器查找匹配行时,它使用它找到的第一个匹配项。

tables_privcolumns_priv, 和procs_priv.表格授予特定于表特定的列和特定于例行的特权。这些表的范围列中的值可以采用以下形式:

  • 通配符字符_可以用在主持人柱子。这些具有与模式匹配的模式匹配操作相同的含义与喜欢操作符。

  • 一种“%”或空白主持人价值手段任何主持人。

  • D bTable_namecolumn_name., 和rutine_name.列不能包含通配符或空白。

服务器对tables_privcolumns_priv, 和procs_priv.根据主持人D b, 和用户列。这类似于D b表排序,但更简单,因为只有主持人列可以包含通配符。

服务器使用排序表来验证其接收的每个请求。对于需要行政权限的请求,例如关闭或者重新加载,服务器只检查用户global_privilege.表,因为这些表是唯一指定管理权限的表。如果这些表中帐户的一行允许请求的操作,服务器就授予访问权,否则拒绝访问。例如,如果你想执行mysqladmin关闭但是你的用户表行不授予关闭服务权限,服务器拒绝访问而无需检查D b表格(后一张表包含否Shutdown_priv列,所以不需要检查。)

用于与数据库相关的请求(更新等等),服务器首先检查用户的全局权限用户表行(不包括部分撤销强加的任何特权限制)。如果该行允许请求的操作,则授予访问权限。如果全局权限在用户表不够时,服务器从D b表:

  • 服务器在D b表上的一个匹配主持人D b, 和用户列。

  • 主持人用户列与连接用户的主机名和MySQL用户名匹配。

  • D b列与用户想要访问的数据库匹配。

  • 如果没有行主持人用户,拒绝访问。

在确定授予的数据库特权后D b表行,服务器将它们添加到授予的全局权限用户表格如果结果允许请求的操作,则授予访问权限。否则,服务器将依次检查用户的表和列权限tables_privcolumns_priv表,将那些添加到用户的权限,并允许基于结果的访问权限。对于存储 - 例行操作,服务器使用procs_priv.表而不是tables_privcolumns_priv

在布尔术语中表达,所先的描述如何计算用户权限的描述可以概括如下:

全局权限或数据库权限或表权限或列权限或例行权限

它可能是显而易见的原因,如果最初发现全局权限对所请求的操作不足,则服务器将这些权限添加到数据库,表和列权限。原因是请求可能需要多种类型的特权。例如,如果你执行一个插入...选择声明,你需要两者选择特权。你的特权可能是这样的用户表行授予一个全局权限和D b表行专门针对相关数据库授予另一个。在这种情况下,您有必要的权限来执行请求,但服务器无法从您的全局或数据库权限中判断。它必须基于组合权限进行访问控制决策。