MySQL权限体系任务事理

作者:天极软件 来历:天极软件

MySQL权限体系保证全部的用户可以严格地做他们假定被容许做的任务。当你连接一个MySQL管事器时, 你的身份由你从那连接的主机你指定的用户名来决意,体系凭据你的身份和你想做什么来授予权限。

MySQL在认定身份中考虑你的主机名和用户名字,是因为有很小的缘由假定一个给定的用户在因特网上属于统一集体。譬喻,用户从whitehouse.gov连接的bill不必和从mosoft.com连接bill是统一集体。 MySQL经由容许你区分在差其他主机上恰巧有异常名字用户来处理它:你可以对从whitehouse.gov连接授与bill一个权限集,而为从microsoft.com的连接授予一个差其他权限集。

MySQL存取控制包括2个阶段:

  • 阶段1:管事器查抄你能否容许连接。
  • 阶段2:假定你能连接,管事器查抄你收回的每个请求。看你能否有足够的权限实施它。譬喻,假设你从数据库中一个表精选(select)行或从数据库甩掉一个表,管事器确定你对表有select权限或对数据库有drop权限。

管事器在存取控制的两个阶段运用在mysql的数据库中的userdbhost表,在这些受权表中字段如下:
表称号 user db host
局限字段 Host Host Host
User Db Db
Password User
权限字段 Select_priv Select_priv Select_priv
Insert_priv Insert_priv Insert_priv
Update_priv Update_priv Update_priv
Delete_priv Delete_priv Delete_priv
Index_priv Index_priv Index_priv
Alter_priv Alter_priv Alter_priv
Create_priv Create_priv Create_priv
Drop_priv Drop_priv Drop_priv
Grant_priv Grant_priv Grant_priv
Reload_priv
Shutdown_priv
Process_priv
File_priv

对存取控制的第二阶段(请求证实),假设请求触及表,管事器可以别的参考tables_privcolumns_priv表。这些表的字段如下:
表称号 tables_priv columns_priv
局限字段 Host Host
Db Db
User User
Table_name Table_name
Column_name
权限字段 Table_priv Column_priv
Column_priv
其他字段 Timestamp Timestamp
Grantor

每个受权表包括局限字段和权限字段。

局限字段决意表中每个条目的局限,即,条目适用的上下文。譬喻, 一个user表条目的HostUser值为'thomas.loc.gov''bob'将被用于证实来自主机thomas.loc.govbob对管事器的连接。异常,一个db表条目的HostUserDb字段的值是'thomas.loc.gov''bob''reports'将用在bob从主机联接thomas.loc.gov存取reports数据库的时候。 tables_privcolumns_priv表包括局限字段,指出每个条目适用的表或表/列的组合。

关于查抄存取的用处,比拟Host值是忽略年夜小写的。UserPassword、DbTable_name值是区分年夜小写的。Column_name值在MySQL3.22.12或往后版本是忽略年夜小写的。

权限字段指出由一个表条目授予的权限,即,可实施什么操作。管事器组合各类的受权表的信息组成一个用户权限的齐全描绘。为此运用的规则在6.8 存取控制, 阶段2:请求证实描绘。

局限字段是字符串,如下所述;每个字段的缺省值是空字符串:
字段名 典范榜样
Host CHAR(60)
User CHAR(16)
Password CHAR(16)
Db CHAR(64) (tables_privcolumns_priv表为CHAR(60)

userdbhost表中,全部权限字段被声明为ENUM('N','Y')--每一个都可有值'N''Y',并且缺省值是'N'.

tables_privcolumns_priv表中,权限字段被声明为SET字段:
表名 字段名 可以的纠剖析员
tables_priv Table_priv 'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter'
tables_priv Column_priv 'Select', 'Insert', 'Update', 'References'
columns_priv Column_priv 'Select', 'Insert', 'Update', 'References'

重年夜地说,管事器运用多么的受权表:

  • user表局限字段决意能否容许或谢绝到来的连接。关于容许的连接,权限字段指出用户的全局(超级用户)权限。
  • dbhost表一同运用:
    • db表局限字段决意用户能从哪个主机存取哪个数据库。权限字段决意容许哪个操作。
    • 当你想要一个给定的db条目运用于多少主机时,host表作为db表的扩展被运用。譬喻,假设你想要一个用户能在你的网络从多少主机运用一个数据库,在用户的db表的Host条目设为空值,然后将那些主机的每一个移入host表。这个机制仔细描绘在6.8 存取控制, 阶段2:请求证实。
  • tables_privcolumns_priv表类似于db表,但是更细腻:他们在表和列级运用而非在数据库级。

把稳管理权限(reload, shutdown, 等等)仅在user表中被指定。这是因为管感性操作是管事器自身的操作并且不是特天命据库,是以没有起因在其他受权表中列出多么的权限。理想上,只需求请教user表来决意你能否执行一个管理操作。

file权限也仅在user表中指定。它不是管感性权限,但你读或谢在管事器主机上的文件的的手腕独立于你正在存取的数据库。

mysqld管事器启动时,读取一次受权表内容。对受权表的更改生效在6.9 权限更改何时生效描绘。

当你改削受权表的内容时,确保你按你想要的体式花样更改权限设置是一个好主见。为扶直诊断问题成果,见6.13 “存取谢绝惹起错误的缘由。关于悄然问题成果上的忠告,见6.14 怎样对使MySQL悄然匹敌解密好手。

一个有效的诊断工具是mysqlaccess脚本,由Carlier Yves 供给给MySQL分发。运用--help选项调用mysqlaccess查明它怎样任务。把稳:mysqlaccess仅用userdbhost表仅查抄存取。它不查抄表或列级权限。





版权声明: 原创作品,容许转载,转载时请务必以超链接体式花样标明文章 原始来因 、作者信息和本声明。否则将追究法律责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1975263.html