Chinaunix首页 | 论坛 | 博客
  • 博客访问: 188170
  • 博文数量: 23
  • 博客积分: 1475
  • 博客等级: 上尉
  • 技术积分: 278
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-23 16:18
文章分类

全部博文(23)

文章存档

2014年(8)

2012年(2)

2010年(3)

2009年(6)

2008年(4)

我的朋友

分类: Mysql/postgreSQL

2014-04-27 11:35:31

    由于开发员人员需要一个只读权限的数据库帐号:readonly,创建好之后,开发人员用这个帐号在mysql的test库中进行测试,发现能够创建数据表,当时觉得非常奇怪,又检查了一下,改帐号的权限:show grants for 'readonly'@'localhost' 发现只有select权限,并没有create 权限,那为何能在test库中创建表呢? 当时以为权限的授予的有问题,就先把帐号readonly的权限都收回, revoke all privileges from 'readonly'@'localhost'  ,这时该账户只有USAGE权限, 使用该账户登录到数据库,进入test库,居然还是能创建表,从这现象看应该不是权限的问题,应该是这个test库的问题.

    查了一些资料,mysql默认创建的test数据库权限比较怪异,所有可连接的用户都能够拥有权限访问该库,并操作其中的对象。这是怎么实现的呢,其实很简单,查看一下mysql.db即可明了:

select * from db where db like 'test%'\G;

*************************** 1. row ***************************

                 Host: %

                   Db: test

                 User: 

          Select_priv: Y

          Insert_priv: Y

          Update_priv: Y

          Delete_priv: Y

          Create_priv: Y

            Drop_priv: Y

           Grant_priv: N

      References_priv: Y

           Index_priv: Y

           Alter_priv: Y

Create_tmp_table_priv: Y

     Lock_tables_priv: Y

     Create_view_priv: Y

       Show_view_priv: Y

  Create_routine_priv: Y

   Alter_routine_priv: N

         Execute_priv: N

           Event_priv: Y

         Trigger_priv: Y

*************************** 2. row ***************************

                 Host: %

                   Db: test\_%

                 User: 

          Select_priv: Y

          Insert_priv: Y

          Update_priv: Y

          Delete_priv: Y

          Create_priv: Y

            Drop_priv: Y

           Grant_priv: N

      References_priv: Y

           Index_priv: Y

           Alter_priv: Y

Create_tmp_table_priv: Y

     Lock_tables_priv: Y

     Create_view_priv: Y

       Show_view_priv: Y

  Create_routine_priv: Y

   Alter_routine_priv: N

         Execute_priv: N

           Event_priv: Y

         Trigger_priv: Y

2 rows in set (0.00 sec)

从权限上来看,host为%,user为空,这就说明了不限制的,所有能连接到MySQL的用户,几乎都拥有test库的所有权限。

  这无异存在安全上的隐患,先不说在其中创建的重要对象可被任何人访问,就算该库中没有任何对象,假如有人想恶意破坏DB服务,只要登录,然后在该库创建一个超大对象,把空闲空间全部占满,就相当于变相达到了破坏db服务的目地。所以像这库就要DROP掉。


阅读(2187) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~