My SQL安全性指南
时间:2007-12-23 来源:不详 作者:迈克DB
2.1MySQL授权表的结构和内容
通过网络连接服务器的客户对MySQL数据库的访问由授权表内容来控制。这些表位于mysql数据库中,并在第一次安装MySQL的过程中初始化(运行mysql_install_db脚本)。授权表共有5个表:user、db、host、tables_priv和columns_priv。
表1user、db和host授权表结构
访问范围列
userdbhost
HostHostHost
UserDbDb
PasswordUser
数据库/表权限列
Alter_privAlter_privAlter_priv
Create_privCreate_privCreate_priv
Delete_privDelete_privDelete_priv
Drop_privDrop_privDrop_priv
Index_privIndex_privIndex_priv
Insert_privInsert_privInsert_priv
References_privReferences_privReferences_priv
Select_privSelect_privSelect_priv
Update_privUpdate_privUpdate_priv
File_privGrant_privGrant_priv
Grant_priv
Process_priv
Reload_priv
Shutdown_priv
表2tables_priv和columns_priv属权表结构
访问范围列
tables_privcolumns_priv
HostHost
DbDb
UserUser
织梦内容管理系统
Table_nameTable_name
Column_name
权限列
Table_privColumn_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表在MySQL3.22.11版引进(与GRANT语句同时)。假如你有较早版本的MySQL,你的mysql数据库将只有user、db和host表。假如你从老版本升级到3.22.11或更新,而没有tables_priv和columns_priv表,运行mysql_fix_privileges_tables脚本创建它们。 本文来自织梦
MySQL没有rows_priv表,因为它不提供记录级权限,例如,你不能限制用户于表中包含特定列值的行。假如你确实需要这种能力,你必须用应用编程来提供。假如你想执行建议的记录级锁定,你可用GET_LOCK()函数做到。
授权表包含两种列:决定一个权限何时运用的范围列和决定授予哪种权限的权限列。
织梦内容管理系统
文章评论
共有位Admini5网友发表了评论 查看完整内容