上一篇 | 下一篇

MYSQL数据库的用户帐号管理基础知识

发布: 2008-7-01 12:38 | 作者: admin | 来源: | 查看: 0次

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试图从本地主机连接时成功了。

[责任编辑:电脑技巧]

字号: | 推荐给好友

评分:0

我来说两句