广

MYSQL

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    Mysql入门系列:安全网络访问mysql数据库服务器

    2018-04-25 21:46:32 次阅读 稿源:互联网
    零七网广告
    全网推广平台,软文发布

      MySQL安全性系统是灵活的。它允许以许多不同的方法设置用户访问权限。通常,可通过GRANT 和REVOKE 语句来进行,这些语句对控制客户机访问的授权表进行修改。但是,您拥有的可能是不支持这些语句的旧版本MySQL(这些语句在MySQL3.22.11以前的版本

      中没有使用),或者可能发觉用户的权限好像不是按希望地在工作。对于这样的情况,了解MySQL授权表的结构以及服务器怎样使用它们来决定访问许可权是有帮助的。您了解到这样一个程度,就可以通过直接修改授权表来增加、删除或修改用户的权限,还可以在检查表时

      诊断权限的问题。

      笔者假定您已经阅读了第11章的“用户账号管理”一节,并理解GRANT 和R E V O K E语句是怎样工作的。GRANT 和REVOKE 提供了建立MySQL账号和相关权限的便利方法,但是,它们只是一个前端。所有真正的操作都发生在MySQL授权表中。

      MySQL授权表的结构和内容

      在网络上连接到服务器的客户机对MySQL数据库的访问是由授权表内容控制的。这些表定位在mysql数据库中,并在首次安装MySQL的过程中进行初始化(如附录A 所描述的)。表12-1和表12-2 示出列五个授权表,它们是user、db、host、tables_priv 和c o l um n s _ priv。

      

      

      授权表的内容按下列各项使用:

      user user 表列出可连接到服务器和口令的用户,并指定用户拥有哪些全局(超级用户)权限(如果有的话)。任何在user 表项中所允许的权限都是全局权限,并适用于所有的数据库。例如,如果在这里允许DELETE 权限,则在该项中列出的用户可从任何表中删除记录。因此,在进行这项操作之前千万要小心,通常,最好在user 表项中关闭所有的权限,而使用其他的、有更多限制的表来指定权限。对超级用户(如r o o t)则是一个例外,但一般很少有。

      

      db db 表列出数据库以及哪些用户拥有访问这些数据库的权限。这里指定的权限适用于数据库中所有的表。

      host host 表与db表结合使用,在更细的级别上控制对特定主机的数据库访问权限。该表不受GRANT 和REVOKE 语句的影响,因此您会发现根本不会去使用它。

      tables_priv tables_priv 表指定表级的权限。在这里所指定的权限适用于表中所有的列。

      columns_priv columns_priv 表指定列级的权限。在这里所指定的权限适用于表中特定的列。

      在12 . 2 . 4节“不用GRANT 建立用户”中,我们将讨论GRANT 语句怎样修改这些表以及怎样通过直接修改授权表来达到相同的结果。

      tables_priv 和columns_priv 表是在MySQL3.22.11中引入的(与GRANT 语句同时)。如果您拥有MySQL的旧版本,则mysql数据库只有user、db 和host 表。如果已经从旧版本升级到3 . 2 2 . 11以上的版本,但仍没有tables_priv 和columns_priv 表的话,可运行mysql_fix_privileges_table 脚本创建它们。

      没有rows_priv 表,因为MySQL不提供记录级的权限。例如,不能使用户只局限于某些列中包含某个值的表中的那些行。如果需要这个能力,必须编写应用程序。如果要想执行咨询记录级锁定(advisory record-level locking),可用附录C 中介绍的GET_LOCK() 函数进行。

      授权表中包含两种类型的列:作用域列( scope column)和权限列( privilege column),前者决定一个项何时可用,后者决定一个项可授予哪些权限(有些授权表中包含其他各式各样的列,但在这里与我们无关)。

      1. 授权表的作用域列

      授权表作用域列指定表项何时使用。每个授权表项中都包含User 和Host 列,以指明该项在特定的用户从特定的主机上连接时应用( host 表是一个例外,它被用于一种特定的、我们还未接触过的方法中)。其他表中包含附加的作用域列。例如, db 表中包含一个Db 列以指明该项适用于哪个数据库。同样, tables_priv 和columns_priv 表中包含使该作用域对数据库中特定表或表中的列缩小的作用域字段。

      2. 授权表权限列

      授权表中还包含权限列。这些列指明了哪些权限被在作用域列中指定的用户所拥有。MySQL支持的权限显示在以下列表中。该列表使用用于GRANT 语句的权限名。对于大部分来说,在user、db 和host 表中权限列的名字与在第11章利用GRANT 语句连接中所讨论的

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七网广告
    零七网广告
    零七网广告
    零七网广告