
MYSQL数据库的用户帐号管理基础知识
【字体:小 大】
MYSQL数据库的用户帐号管理基础知识
作者:不详 文章来源:网络 点击数:118 更新时间:2007-1-21 
实际上,WITHGRANTOPTION子句允许将访问的权利授予给另一个用户。要知道,具有GRANT权限的两个用户可以相互授予自己的权限。如果只给一个用户授予SELECT权限而给另一个用户除SELECT外还授予了GRANT和其他的权限,则第二个用户可以使第一个用户“强大”起来。.
取消权限和删除用户.
为了收回某个用户的权限,可使用REVOKE语句。除了要用FROM替换TO并且没有IDENTIFIEDBY或WITHGRANTOPTION子句外,REVOKE的语法与GRANT语句非常相似:.
REVOKEprivileges(columns)ONwhatFROMuser.
user部分必须与您想要取消其权限的用户的原始GRANT语句的user部分相匹配。privileges部分不需要匹配,您可用GRANT语句授权,然后用REVOKE语句取消其中的一部分。REVOKE语句只删除权限,不删除用户。用户的项仍然保留在user表中,即使您取消了该用户的所有权限也是如此。这意味着该用户仍然可连接到服务器上。要想删除整个用户,必须用DELETE语句将该用户的记录从user表中直接删除:.
.
.
DELETE语句删除该用户的项,FLUSH语句告诉服务器重新加载授权表(当使用GRANT或REVOKE语句,而不是直接修改授权表时,这些表将自动重新加载)。.
一个权限难题,第一部分.
下面是一个在MySql邮件清单中反复出现的情况:一位新的MySql管理员给某用户增加一个项,使用了主机名部分,该部分是用一个模式来指定的。例如:.
GRANTALLONsamp_db.*TOfred@%.snake.netIDENTIFIEDBY"cocoa".
这里的意图是允许用户fred从snake.net域的所有主机中进行连接,并且具有对samp_db数据库的所有权限。事实上,fred能够从那些主机中连接(除了服务器主机本身外)。当fred试着从服务器主机中进行连接时,该企图以“访问被拒绝”的消息而告失败。.
即使用户指定了正确的口令也是如此。.
如果授权表中包含了由MySql_install_db安装脚本安装的缺省项,这种情况也会发生。其原因是,当服务器验证fred连接的企图时,一个匿名用户项(anonymous-userentry)比fred项优先。匿名用户项要求该用户不用口令来连接,并且一个口令错误匹配发生。.
该问题的另一个背景将在第12章“权限难题,第二部分”中给出。目前,只要说修正此问题的方法是从user表中删除匿名用户项就足够了,我们不能用REVOKE,因为该命令只删除权限。要想完全摆脱这些匿名项,执行如下操作:.
%MySql-urootMySqlmysql>DELETEFROMuserwhereUser="";.
mysql>FLUSHPRIVILEGES;.
现在,当fred试图从本地主机连接时成功了。
[责任编辑:电脑技巧]
