The FILE privilege gives you permission to read and write files on the server host using the LOAD DATA INFILE and SELECT ... INTO OUTFILE statements and the LOAD_FILE() function. A user who has the FILE privilege can read any file on the server host that is either world-readable or readable by the MySQL server. (This implies the user can read any file in any database directory, because the server can access any of those files.) The FILE privilege also enables the user to create new files in any directory where the MySQL server has write access. As a security measure, the server will not overwrite existing files.

FILE权限可访问文件系统中的文件,file权限授予不当可能造成安全隐患.

一个具有FILE权限的用户执行以下语句就可查看服务器上全体可读的文件:

mysql> CREATE TABLE etc_passwd(pwd_entry TEXT);
mysql> LOAD DATA INFILE '/etc/passwd' INTO TABLE etc_passwd;
mysql> SELECT * FROM etc_passwd;

passwd这个文件本身对所有用户是可读的.

但是如果MySQL服务器数据目录上的访问权限设置得不好,就会留下让具有FILE权限的用户进入别人数据库的安全漏洞。所以建议把数据目录设置成只能由MySQL服务器读取。

下面演示一个利用具有FILE权限的用户读取数据目录中文件权限设置不严密的数据库数据的过程:
mysql> use test;
mysql> create table temp(b longblob);
mysql> show databases                    #显示数据库名清单,--skip-show-database可禁止该功能
mysql> load data infile './db/xxx.frm' into table temp fields escaped by '' lines terminated by '';
mysql> select * from temp into outfile 'xxx.frm' fields escaped by '' lines terminated by '';
mysql> delete from temp;
mysql> load data infile './db/xxx.MYD' into table temp fields escaped by '' lines terminated by '';
mysql> select * from temp into outfile 'xxx.MYD' fields escaped by '' lines terminated by '';
mysql> delete from temp;
mysql> load data infile './db/xxx.MYI' into table temp fields escaped by '' lines terminated by '';
mysql> select * from temp into outfile 'xxx.MYI' fields escaped by '' lines terminated by '';
mysql> delete from temp;

这样,你的数据库就给人拷贝到本地了.如果是myisam的表,那么只需要3个文件: frm myd myi,随便找一台mysql服务器就可以把表打开了.里面的数据暴露无疑.

更危险的是,如果你用root启动mysql,那么整个操作系统上的文件对具有file权限的mysql用户来说都不是秘密.所以file权限是非常危险的,能不用尽量别用它.

http://hi.baidu.com/fishhust/item/05a2383b1ddf7fc4382ffac6

数据库中File权限的危害的更多相关文章

  1. 涂抹mysql笔记-数据库中的权限体系

    涂抹mysql笔记-数据库中的权限体系<>能不能连接,主机名是否匹配.登陆使用的用户名和密码是否正确.mysql验证用户需要检查3项值:用户名.密码和主机来源(user.password. ...

  2. PG数据库中用户权限

    每当在数据库中创建一个对象,所有者可以分配它访问权限.所有者通常是执行创建语句的用户.对于大多数类型的对象,初始状态是,只有所有者(或超级用户)可以修改或删除对象.为了让其他角色或用户使用它,特权或权 ...

  3. mysql中FILE权限

    FILE权限指的是对服务器主机上文件的访问,数据库用户拥有FILE权限才可以执行select into outfile,load data infile操作. 参考文章:http://blog.itp ...

  4. Django中的权限系统

    Django中已经为我们设置好了基本的权限系统,在定义好model同步数据库后,在每个库下面都会有一张 'auth_permission' 表.该表里面记录了每条权限的描述(name字段,can do ...

  5. 查看MYSQL数据库中所有用户及拥有权限

    查看MYSQL数据库中所有用户 mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM m ...

  6. SQL Server中用户账号在数据库中的安全性,可以控制用户的权限

    今天在公司SQL Server数据库中,查到一个SQL Server用户账号"DemoUser": "DemoUser"不在数据库服务器的sysadmin角色中 ...

  7. 如何在数据库中进行RBAC权限应用

    上周我们发了一篇关于"删库跑路"引发了大家对于数据安全的思考,而权限管理又跟数据安全密不可分.权限管理作为数据系统的重要组成部分,通过控制账号的可支配能力,防止因用户操作不当导致的 ...

  8. C#关于数据库中存储的用户权限类似 "普通员工,管理员" 如何在代码中读取分析权限

    之前在看某些数据库的用户权限的表时,发现字段是这样类似这样存储的"  普通员工,管理员 ",当时觉得他们是通过分割字符串来分析权限的.后来读到 Liam Wang  的 https ...

  9. 详细解读MySQL中的权限

    一.前言 很多文章中会说,数据库的权限按最小权限为原则,这句话本身没有错,但是却是一句空话.因为最小权限,这个东西太抽象,很多时候你并弄不清楚具体他需要哪 些权限. 现在很多mysql用着root账户 ...

随机推荐

  1. Sublime 3 打造成 Python/Django IDE开发利器

    Sublime Text 是一款非常强大的文本编辑器, 下面我们介绍如何将 Sublime Text 3 打造成一款 Python/Django 开发利器:   1. 安装 Sublime Text ...

  2. Java面向对象 线程技术--上篇

     Java面向对象   线程 知识概要:                   (1)线程与进程 (2)自定义线程的语法结构 (3)多线程概念理解 (4)多线程状态图 (5)多线程--卖票 (6)同 ...

  3. JavaWeb(七)之详解JavaWeb路径

    前言 在我们的实际开发中,经常要写路径,不管是链接,重定向还是转发,这都是需要路径的.那这一篇我给大家详细的分享一下Web中的各种路径问题. 世界上一切东西都是相对的,对于这点而言,相信大家并不陌生, ...

  4. Javascript从“繁”到“简”进行数组去重

    随着JavaScript提供语法的增多,数组去重方式也越来越多.现在从最原始的方式到最简洁的方式,一步步进行剖析. 双重循环 数组去重,不就是比较数组元素,去掉重复出现的么.最原始的方式不正是双重循环 ...

  5. TableView的性能优化

    现在市场上的iOS应用程序界面中使用最多的UI控件是什么? 答案肯定是UITableView,几乎每一款App都有很多的界面是由UITableView实现的,所以为了做出一款优秀的App,让用户有更好 ...

  6. ABAP 选择屏幕创建标签页

    *&---------------------------------------------------------------------* *& Report ZTEST_TAB ...

  7. Babylon.GUI官方文档翻译

    Babylon.GUI是一个基于Babylon.js的WebGL库,可以用来在WebGL3D场景中生成交互性UI与动态纹理.相比于html ui,Babylon.GUI的功能较为简化,但使用起来也更加 ...

  8. win10 uwp 如何让一个集合按照需要的顺序进行排序

    虽然这是 C# 的技术,但是我是用在 uwp ,于是就把标题写这个名.有一天,我的小伙伴让我优化一个列表.这个列表是 ListView 他绑定了一个 ObservableCollection 所以需要 ...

  9. ThreadPoolExecutor系列<二、ThreadPoolExecutor 代码流程图>

    本文系作者原创,转载请注明出处:http://www.cnblogs.com/further-further-further/p/7681648.html 1.ThreadPoolExecutor代码 ...

  10. linux脚本定时备份数据库表(详解)

    数据库备份策略 备份的数据库 服务器:10.10.10.254.10.2.11.10 数据库:gps6 备份的表: user_info alarminfo electronic_fence jpush ...