
上一页 1 2 3 4 5 6 7 8 9 10 11 下一页
如果已经指定了数据库级的权限,用户名和主机名将记录在db 表项的User 和Host 列中。已授权的数据库记录在Db 列中,所授予的权限记录在权限列中。
对于表级和列级权限,效果是类似的。在tables_priv 和columns_priv 表中创建项来记录用户名、主机名和数据库以及需要的表或者表和列。授予的权限记录在权限列中。
如果还记得上述讨论,即使不用GRANT 语句也能够进行GRANT 的工作。请记住,当直接修改授权表时,需要告诉服务器重新加载授权表,否则它将不会留意这些变化。可以通过执行MySQLadmin flush-privileges 或mysqladmin reload 命令施加重新加载操作。如果忘记
这步操作,服务器将不按您的设想进行工作。
以下grant 语句创建有全部权限的超级用户,其中包括向其他用户授权的能力:
GRANT ALL ON *.* TO ethel@localhost IDENTFIEDBY "coffee" WITH GRANT OPTION
该语句将创建user 表的ethel@localhost 的项,并开启所有权限,因为超级(全局)用户将存储在那里。用INSERT 进行同样工作的语句是:

这是一个很难看的INSERT 语句!您甚至会发现它在您的MySQL版本上不工作。授权表的结构可能已经改变,在user 表中可能不会有14 个权限列。此时,应使用S H O W COLUMNS 来查找每个授权表包含些什么权限列,然后调整INSERT 语句。
下列GRANT 语句还创建具有超级用户状态的用户,但是只对单个的权限:
GRANT ALL ON *.* TO flush@localhost IDENTFIEDBY "flushpass"
您可能还记得我们曾在第11章建立flush 用户时使用过该语句。本例中的INSERT 语句比前一个更简单,可以很容易地列出列名并指定唯一的一个权限列。所有其他的列都将设置为缺省值“N”:

数据库级的权限是用ON db_name.* 子句而不是用ON *.* 授予的:
GRANT ALL ON samp_db.* TO boris@localhost IDENTFIEDBY "ruby"
这些权限都不是全局的,因此不能存储在user 表中。我们仍需要在user 表中创建一个项(使得用户可以连接),但我们还需要创建一个db 项来记录数据库级的权限:

英特尔 酷睿(TM)2双核,送指纹识别器一个,再赠两份好礼,请电800-858-2418