作者:天极软件 来历:天极软件
MySQL权限体系保证全部的用户可以严格地做他们假定被容许做的任务。当你连接一个MySQL管事器时, 你的身份由你从那连接的主机和你指定的用户名来决意,体系凭据你的身份和你想做什么来授予权限。
MySQL在认定身份中考虑你的主机名和用户名字,是因为有很小的缘由假定一个给定的用户在因特网上属于统一集体。譬喻,用户从whitehouse.gov连接的bill不必和从mosoft.com连接bill是统一集体。 MySQL经由容许你区分在差其他主机上恰巧有异常名字用户来处理它:你可以对从whitehouse.gov连接授与bill一个权限集,而为从microsoft.com的连接授予一个差其他权限集。
MySQL存取控制包括2个阶段:阶段1:管事器查抄你能否容许连接。
阶段2:假定你能连接,管事器查抄你收回的每个请求。看你能否有足够的权限实施它。譬喻,假设你从数据库中一个表精选(select)行或从数据库甩掉一个表,管事器确定你对表有select权限或对数据库有drop权限。
管事器在存取控制的两个阶段运用在mysql的数据库中的user、db和host表,在这些受权表中字段如下:
表称号
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_priv和columns_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表条目的Host和User值为'thomas.loc.gov'和'bob'将被用于证实来自主机thomas.loc.gov的bob对管事器的连接。异常,一个db表条目的Host、User和Db字段的值是'thomas.loc.gov'、'bob'和'reports'将用在bob从主机联接thomas.loc.gov存取reports数据库的时候。 tables_priv和columns_priv表包括局限字段,指出每个条目适用的表或表/列的组合。
关于查抄存取的用处,比拟Host值是忽略年夜小写的。User、Password、Db和Table_name值是区分年夜小写的。Column_name值在MySQL3.22.12或往后版本是忽略年夜小写的。
权限字段指出由一个表条目授予的权限,即,可实施什么操作。管事器组合各类的受权表的信息组成一个用户权限的齐全描绘。为此运用的规则在6.8 存取控制, 阶段2:请求证实描绘。
局限字段是字符串,如下所述;每个字段的缺省值是空字符串:
字段名
典范榜样
Host
CHAR(60)
User
CHAR(16)
Password
CHAR(16)
Db
CHAR(64)
(tables_priv和columns_priv表为CHAR(60))
在user、db和host表中,全部权限字段被声明为ENUM('N','Y')--每一个都可有值'N'或'Y',并且缺省值是'N'.
在tables_priv和columns_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表局限字段决意能否容许或谢绝到来的连接。关于容许的连接,权限字段指出用户的全局(超级用户)权限。
db和host表一同运用:
db表局限字段决意用户能从哪个主机存取哪个数据库。权限字段决意容许哪个操作。
当你想要一个给定的db条目运用于多少主机时,host表作为db表的扩展被运用。譬喻,假设你想要一个用户能在你的网络从多少主机运用一个数据库,在用户的db表的Host条目设为空值,然后将那些主机的每一个移入host表。这个机制仔细描绘在6.8 存取控制, 阶段2:请求证实。
tables_priv和columns_priv表类似于db表,但是更细腻:他们在表和列级运用而非在数据库级。
把稳管理权限(reload, shutdown, 等等)仅在user表中被指定。这是因为管感性操作是管事器自身的操作并且不是特天命据库,是以没有起因在其他受权表中列出多么的权限。理想上,只需求请教user表来决意你能否执行一个管理操作。
file权限也仅在user表中指定。它不是管感性权限,但你读或谢在管事器主机上的文件的的手腕独立于你正在存取的数据库。
当mysqld管事器启动时,读取一次受权表内容。对受权表的更改生效在6.9 权限更改何时生效描绘。
当你改削受权表的内容时,确保你按你想要的体式花样更改权限设置是一个好主见。为扶直诊断问题成果,见6.13 “存取谢绝惹起”错误的缘由。关于悄然问题成果上的忠告,见6.14 怎样对使MySQL悄然匹敌解密好手。
一个有效的诊断工具是mysqlaccess脚本,由Carlier Yves 供给给MySQL分发。运用--help选项调用mysqlaccess查明它怎样任务。把稳:mysqlaccess仅用user、db和host表仅查抄存取。它不查抄表或列级权限。
版权声明:
原创作品,容许转载,转载时请务必以超链接体式花样标明文章 原始来因 、作者信息和本声明。否则将追究法律责任。