作者:天极软件 来历:天极软件
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
、Passwor
d、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
表仅查抄存取。它不查抄表或列级权限。
版权声明:
原创作品,容许转载,转载时请务必以超链接体式花样标明文章 原始来因 、作者信息和本声明。否则将追究法律责任。