`
majie
  • 浏览: 74208 次
  • 来自: ...
社区版块
存档分类
最新评论

MySQL的一个小小安全问题(关于匿名用户)

阅读更多
前两天在帮朋友整理他的主页空间时候,发现的一点关于mysql可能大家都会忽略的问题:我们知道,在安装完MySQL后,它会自动创建一个root用户和一个匿名用户,其初始密码都是空,对于前者,很多参考资料上都会提醒大家要注意及时设定一个密码,而忽略了后者,大概是因为后者默认设定为只能在本机使用的缘故吧。

  但如果你的MySQL是要提供给Web服务器作数据库服务的,忽略这个匿名用户的代价可能相当惨重,因为在默认设置下,这个匿名用户在localhost上几乎拥有和root一样的权限,这时候,如果你的客户拥有上传脚本文件、脚本文件可以进行MySQL数据库操作(比如允许操作MySQL的php)的权限已经可能将你的MySQL改动得面目全非了:

  我今天帮朋友整理他的主页空间的时候,试着写了一个很简单的执行sql语句的php文件上传上去,其中连接字中的user,passWord我都试着置空,host=localhost,结果发现我的sql语句可以执行,于是执行select * from MySQL.user察看用户权限,发现这个用户在localhost权限非常高,连grant_priv都有,(察看的时候,会发现在root用户下有两行用户名、密码为空的,但各项权限有y 的,就是这个匿名用户本地、远程权限设置了)

  所以我试着用这个php页面创建一个新用户,并grant给他较高的权限,结果一举成功,这样我就可以用这个新用户通过我本机的MySQL client连接到这个网的MySQL server,并用这个新建立的用户的管理权限对这个网站的MySQL server进行管理,看到自己可以进行这样轻易获得深入的数据库操作,我怎么还敢把朋友的主页空间的敏感资料放入这个MySQL server呢?

  改进建议:

  1、在安装完成MySQL 后,不仅改变root用户的的密码,也同时改变匿名用户的密码,方法类似改变root的密码的方式:

  MySQL> UPDATE user set password=PASSWORD(´yournewpassword´) where user=´´;
  MySQL>FLUSH PRIVILEGES;

  2、如非必要,删除这个匿名用户,这样所有人要使用MySQL 都必须提供用户名,即便日后出了问题,也容易查找问题的源头。

  3、除了root用户外,其他用户包括匿名用户(如果没有删除这个用户)不应该拥有grant权限,防止管理权限不受控制的扩散出去。

  4、赋予用户updatedeletealertcreatedrop权限的时候,应该限定到特定的数据库,尤其要避免普通客户拥有对MySQL数据库做操作的权限,否则你的系统设置很可能被替换掉。

  5、检查MySQL.user表,取消不必要用户的shutdown_priv,reload_priv,process_priv和File_priv权限,这些权限可能泄漏更多的服务器信息包括非MySQL的其它信息出去。

  6、如果不打算让你的用户使用MySQL数据库,在提供诸如php这样的脚本语言的时候,重新设置或编译你的php,取消它们对MySQL的默认支持。
分享到:
评论

相关推荐

    mysql是线程不安全的,mysql不是线程安全的,多线程共用同一个mysql连接是会崩溃的.所以同样QT的QSqlDatabase也是线程不安全的,QS会崩溃

    mysql是线程不安全的,mysql不是线程安全的,多线程共用同一个mysql连接是会崩溃的 QT的QSqlDatabase是基于mysql的,所以一样是线程不安全的 现讲明mysql为什么是线程不安全的,以及在多线程环境下如何使用mysql,...

    MySql用户和数据安全

    MySqL课件 用于了解MySqL中用户和数据安全相关的内容 实践操作均可实现

    MySQL用户管理和用户授权详解.pdf

    •一 : mysql 用户管理与恢复root 密码[1] •1 新建用户[2] •2 查看用户信息与显示登录用户[3] •3 重命名用户[4] •4 删除用户[5] •5 修改密码[6] •6 恢复root 密码[7] •6.1 修改配置文件,设置跳过密码项[8]...

    初始化MySQL用户(删除匿名用户)

    安装完MySQL后,系统默认会创建一个不需要密码的root用户,和一个无用户名无密码的匿名用户(Anonymous Account)。进行下面的初始化操作以合理授权,增强安全。 设置root密码先以root身份登入mysql -u root,设置...

    MYSQL删除匿名用户的方法(提高安全性)

    安装完MySQL以后会自动创建一个root用户和一个匿名用户,对于root大家都非常注意,而这个匿名用户很多人都会忽略,大概是因为匿名用户默认设定为只能在本地使用的缘故吧。  但如果MySQL要作为数据库提供给Web服务器...

    MySQL在网络安全方面采取的主要措施

    MySQL使用了很多授权表来跟踪用户和这些用户的不同权限。这些表就是在mysql数据库中的MyISAM表。将这些安全信息保存在MySQL中是非常有意义的。因此,我们可以使用标准的SQL来设置不同的权限。一般在MySQL数据库中...

    MySql数据库安全配置基线

    整理的一些mysql数据库安全规范,解决数据库部分安全问题。

    mysql安全知识ppt

    mysql的安全没有mssql、oracle做得自动化,更多的需要dba及管理员去参入。值得大家关注~

    MYSQL

    14.1.4 编译并安装用户定义函数 14.2 增加一个新的原生(native)函数 15 为MySQL增加新过程 15.1 analyse过程 15.2 编写一个过程 16 MySQL对 ODBC 支持 16.1 MyODBC 支持的操作系统 ...

    mysql 加固策略

    1.修改root用户口令,删除空口令 2.删除默认数据库和数据库用户 3.改变默认mysql管理员帐号 4.关于密码的管理 5.使用独立用户运行msyql 6.禁止远程连接数据库 7.限制连接用户的数量 8.用户目录权限限制 9.命令历史...

    MySQL数据库:数据库的安全管理.pptx

    每个数据库都有一个用户名列表,每个用户名都有相关的口令,以防止未经授权使用,每个用户有一个安全域,它包含一组属性: 对用户可用的操作 每个用户系统资源的限制 每个用户数据资源的访问限制 ;一般来说,数据库...

    MySQL5+MySQL8中文手册(chm文件)

    本手册介绍了不包含在MySQL 8的每一个版本的功能;这种功能可能不包含在MySQL 8版授权给你。如果你有任何问题的特征包含在你的MySQL 8版,指的是你的MySQL 8许可协议或与Oracle的销售代表。笔记详细介绍每个版本的...

    MySQL中文参考手册.chm

    14.1.2 参数处理 14.1.3 返回值和出错处理 14.1.4 编译并安装用户定义函数 14.2 增加一个新的原生(native)函数 15 为MySQL增加新过程 15.1 analyse过程 15.2 编写一个过程 ...

    mysql查询多少秒内的数据,分类统计用户,sum()函数的一个特殊用法 一条比较经典的语句

    mysql查询多少秒内的数据,分类统计用户,sum()函数的一个特殊用法 一条比较经典的语句mysql查询多少秒内的数据,分类统计用户,sum()函数的一个特殊用法 一条比较经典的语句mysql查询多少秒内的数据,分类统计用户,...

    MySQL安全加固.pdf

    这个文档里面包含MySQL的基本操和MySQL安全加固两个方面。 基础部分包括: 1.数据库管理 2.数据库结构管理 3.增删改查 4.grant命令 5.用户权限 加固部分包括: 1.删除默认的数据库用户和数据库 2.不适用默认的密码和...

    MySQL安全配置详解

    MySQL是多平台的数据库,不可避免的默认配置也是适合多种情况的需求,因此需要用户需要在自定义的环境下对MySQL的使用进行加固

    MySQL8中文参考手册 .chm

    本手册介绍了不包含在MySQL 8的每一个版本的功能;这种功能可能不包含在MySQL 8版授权给你。如果你有任何问题的特征包含在你的MySQL 8版,指的是你的MySQL 8许可协议或与Oracle的销售代表。 笔记详细介绍每个版本...

    E096-数据库安全-mysql用户权限设置及登陆限制.pdf

    E096-数据库安全-mysql用户权限设置及登陆限制

    MySql 5.1 参考手册.chm

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

Global site tag (gtag.js) - Google Analytics