
上一页 1 2 3 4 5 6 7 8 9 10 11 下一页
语句。
FILE 特权相当危险,不要轻易授权。以下是一个FILE 特权用户的例子:
CREATE TABLE etc_passwd(pwd_entry TEXT);
LOAD DATA INFILE "/etc/passwd" INTO TABLE etc_passwd;
SELECT * FROM etc_passwd;
发布这些语句后,该用户拥有您的口令文件的内容。事实上,在服务器中,任何公用的可读文件的内容都可以通过网络由任何有FILE 权限的用户访问。
FILE 权限也可以用来对系统中的、不能用足够的限制文件许可权来建立的数据库进行折衷。这就是为什么应该将数据目录的内容设置成为只能由服务器可读的原因。如果与数据库表相对应的文件是全球范围内可读的,则不仅有该服务器主机账号的用户可读取它们,而且有FILE 权限的任何客户机也都可通过网络连接并读取它们!下面的过程说明如何进行此项操作:
创建有LONGBLOB 列的表:
USE test
CREATE TABLE tmp (b LONGBLOB)
用此表读取您要窃取的表的每个文件的内容,然后将该表的内容写到您自己的数据库文件中:

现在,您有了一个新表y,它包含other_db.x 的内容,您可以对它进行完全访问。
为了避免某人用同样的方式攻击您,应根据“内部安全性:安全数据目录访问”的指导设置数据目录的许可权。当启动服务器以限制用户利用SHOW DATABASE 和S H O W TABLE S对他们不能访问的数据库进行访问时,还可使用-skip-show-database 选项。这将有助于防止用户查找不应访问的数据库和表。
ALTER 权限可能以您没有设想的任何方法被使用。假定您要user1能访问table1但不能访问t a b l e 2。但带有ALTER 权限的用户可能会通过使用ALTER TABLE 将table2 重新命名为table1来打乱您的这一设想。
要小心使用GRANT 权限。如果两个用户有不同的权限但都具有GRANT权限,则他们能使互相的访问权更强大。
不用GRANT 建立用户
如果是MySQL3.22.11以前的版本,则不能用GRANT(或R E V O K E)语句建立用户和访问权限,但是可以直接修改授权表的内容。如果理解GRANT 语句是怎样修改授权语句的,这个问题就很容易理解。可以通过手工发布INSERT 语句自己来进行( INSERT 语句很难正确输入,但这是另外的问题。事实上这个问题就是为什么GRANT 语句设计得如此易于使用的原因)。
当发布GRANT 语句时,指定了用户名和主机号,可能还指定了口令。user 表项对该用户建立,这些值记录在该项的U ser、Host 和Password 列中。需要仔细考虑的一件事是,GRANT 语句对口令进行加密,而INSERT 则不能,它需要用PASSWORD() 函数对INSERT语句中的口令进行加密。
上一篇: Mysql入门系列:安排预防性的维护MYSQL数据库服务器
下一篇: Mysql入门系列:检查和维护MYSQL数据库表
英特尔 酷睿(TM)2双核,送指纹识别器一个,再赠两份好礼,请电800-858-2418