WEB开发网
开发学院数据库MySQL MySQL安全性指南 阅读

MySQL安全性指南

 2007-11-11 15:25:20 来源:WEB开发网   
核心提示: 2.1 MySQL(和PHP搭配之最佳组合)授权表的结构和内容通过网络连接服务器的客户对MySQL(和PHP搭配之最佳组合)数据库的访问由授权表内容来控制,这些表位于MySQL(和PHP搭配之最佳组合)数据库中,MySQL安全性指南(3),并在第一次安装MySQL(和PHP搭配之最佳组合)的过程中初始化(运行MySQ



2.1 MySQL(和PHP搭配之最佳组合)授权表的结构和内容
通过网络连接服务器的客户对MySQL(和PHP搭配之最佳组合)数据库的访问由授权表内容来控制。这些表位于MySQL(和PHP搭配之最佳组合)数据库中,并在第一次安装MySQL(和PHP搭配之最佳组合)的过程中初始化(运行MySQL(和PHP搭配之最佳组合)_install_db脚本)。授权表共有5个表:user、db、host、tables_priv和columns_priv。

表1 user、db和host授权表结构
访问范围列

user db host
Host Host Host
User Db Db
Password User 
数据库/表权限列
Alter_priv Alter_priv Alter_priv
Create_priv Create_priv Create_priv
Delete_priv Delete_priv Delete_priv
Drop_priv Drop_priv Drop_priv
Index_priv Index_priv Index_priv
Insert_priv Insert_priv Insert_priv
References_priv References_priv References_priv
Select_priv Select_priv Select_priv
Update_priv Update_priv Update_priv
File_priv Grant_priv Grant_priv
Grant_priv  
Process_priv  
Reload_priv  
Shutdown_priv  
 
表2 tables_priv和columns_priv属权表结构

访问范围列
tables_priv columns_priv
Host Host
Db Db
User User
Table_name Table_name
Column_name  
权限列
Table_priv Column_priv

授权表的内容有如下用途:

user表
user表列出可以连接服务器的用户及其口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果你启用了DELETE权限,在这里列出的用户可以从任何表中删除记录,所以在你这样做之前要认真考虑。
db
db表列出数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。
host表
host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用db好些。这个表不受GRANT和REVOKE语句的影响,所以,你可能发觉你根本不是用它。
tables_priv表
tables_priv表指定表级权限,在这里指定的一个权限适用于一个表的所有列。
columns_priv表
columns_priv表指定列级权限。这里指定的权限适用于一个表的特定列。
在“不用GRANT设置用户”一节里,我们再讨论GRANT语句如何对修改这些表起作用,和你怎样能通过直接修改授权表达到同样的效果。

tables_priv和columns_priv表在MySQL(和PHP搭配之最佳组合) 3.22.11版引进(与GRANT语句同时)。如果你有较早版本的MySQL(和PHP搭配之最佳组合),你的MySQL(和PHP搭配之最佳组合)数据库将只有user、db和host表。如果你从老版本升级到3.22.11或更新,而没有tables_priv和columns_priv表,运行MySQL(和PHP搭配之最佳组合)_fix_privileges_tables脚本创建它们。

MySQL(和PHP搭配之最佳组合)没有rows_priv表,因为它不提供记录级权限,例如,你不能限制用户于表中包含特定列值的行。如果你确实需要这种能力,你必须用应用编程来提供。如果你想执行建议的记录级锁定,你可用GET_LOCK()函数做到。

授权表包含两种列:决定一个权限何时运用的范围列和决定授予哪种权限的权限列。

2.1.1 授权表范围列
授权表范围列指定表中的权限何时运用。每个授权表条目包含User和Host列来指定权限何时运用于一个给定用户从给定主机的连接。其他表包含附加的范围列,如db表包含一个Db列指出权限运用于哪个数据库。类似地,tables_priv和columns_priv表包含范围字段,缩小范围到一个数据库中的特定表或一个表的特定列。

2.1.2 授权表权限列
授权表还包含权限列,他们指出在范围列中指定的用户拥有何种权限。由MySQL(和PHP搭配之最佳组合)支持的权限如下表所示。该表使用GRANT语句的权限名称。对于绝大多数在user、db和host表中的权限列的名称与GRANT语句中有明显的联系。如Select_priv对应于SELECT权限。

上一页  1 2 3 

Tags:MySQL 安全性 指南

编辑录入:coldstar [复制链接] [打 印]
赞助商链接