Mysql初装之数据库隐患

在数据库级别的权限,如果给一个用户CREATE权限的话,那么这个用户是这个时候就是看到这个数据库了。

grant create on suys.* to sec2@'192.168.124.13';

比如这个语句给sec2用户 create 权限在suys数据库上面。但是实际查询的时候可以看见

sec2@192.168.124.13:3306  07:41:24 [suys]>show databases;

+--------------------+

| Database           | 

+--------------------+

| information_schema |

| suys               |

| test               |

+--------------------+

3 rows in set (0.02 sec)


sec2@192.168.124.13:3306  07:41:34 [suys]>

这个时候,我们却看见了其他另外2个库(information_schema 和 test)。


1.并不存在的information_schema库

    information_schema库比较像Oracle数据库的那些系统V$*视图数据字典。这样所有登陆到MySQL数据库的

用户都应该访问这个库。

    需要注意的是,Mysql中的information_schema库并不是真正存在的数据库。在操作系统层面没有与之对应

物理文件。这个数据库及库中的对象完全是由Mysql自动维护的虚拟对象。这些对象用户能看见但是不能修改。

    information_schema库对象的另一个特殊之处在于,用户不能对information_schema数据库中的对象做授权。

即使做了操作也会失败,管理员用户也不行。


2.有趣的test库

   新建MySql数据库后,默认创建的test数据库比较怪异,所有可连接的用户都能拥有权限访问该库,并操作其中

的对象,这是怎么实现的呢,其实很简单,查看库级权限字段表mysql.db。

root@localhost:mysql.sock  21:40:59 [mysql]>

root@localhost:mysql.sock  21:41:00 [mysql]>select * from mysql.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.01 sec)

     从权限上来看,Host=%,User为空。这就说明了不限制的。所有能连接到Mysql的用户,全都拥有test及test开通的数据库的几乎所有权限。

这无疑存在安全上的隐患,先不说在其中创建的重要对象可以被随便访问。在该库如果创建一个很大的对象,就能把空间全部占满。

   所以在刚创建完数据库后,在没有任何新用户有新权限的时候,执行下面SQL,删除test的相关权限。如果你已经建了很多用户后,才看见这个问题,用delete删除单条数据好了。

root@localhost:mysql.sock  21:43:16 [mysql]>

root@localhost:mysql.sock  21:43:36 [mysql]>truncate table mysql.db;

Query OK, 0 rows affected (0.00 sec)


root@localhost:mysql.sock  21:43:49 [mysql]>

root@localhost:mysql.sock  21:43:50 [mysql]>

    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值