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

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安全配置详解

    2. 删除或限制默认数据库和用户:安装MySQL时通常会生成一些默认的数据库和用户,例如test数据库和匿名用户。这些默认配置可能不适用于生产环境,并且可能成为安全风险。应删除不必要的默认数据库和用户,或更改其...

    Mysql root用户对应的host字段缺少localhost导致本地无法访问数据库问题修复

    Mysql root用户对应的host字段缺少localhost导致本地无法访问数据库问题修复 Mysql 是一个关系数据库管理系统,广泛应用于各种 web 应用程序中。但是,在使用 Mysql 时,很容易遇到一些问题,例如 Mysql root 用户...

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

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

    MYSQL数据库的安全漏洞及防范方法.pdf

    2. 如非必要,删除这个匿名用户,这样所有人要使用MYSQL都必需提供用户名,即便日后出了问题,也容易查找问题的源头。 3. 除了ROOT用户外,其他用户包括匿名用户(如果没有删除这个用户)不直接拥有GRANT权限,防止...

    MySQL安全问题探讨.pdf

    本文将从操作系统层面和数据库自身管理的角度,深入探讨MySQL的安全问题,并提出相应的防范措施。 首先,针对操作系统的安全问题,有以下几个关键点: 1. **严格控制操作系统账号和权限**:数据库服务器上应限制...

    centos 7.1 mysql5.7.12常见问题解决

    解决方法是杀死 MySQL 进程,启动 MySQL 服务,并创建一个软链接到 MySQL 套接字文件。 知识点: * MySQL 服务管理:MySQL 服务的启动和停止是非常重要的,需要正确地管理服务状态。 * MySQL 套接字文件:MySQL ...

    MySQL网络数据库的安全问题及解决方法.pdf

    root用户拥有所有权限,包括管理权限,但在默认设置下,root用户可以从本地主机无密码访问,这构成了一个明显的安全隐患。为了避免这种情况,建议在安装MySQL后立即为root用户设置强密码。 其次,系统安全涉及...

    Ubuntu18.0.4安装MySQL并设置ROOT用户密码

    此命令将引导你完成一系列关于安全性的问题,例如设置 ROOT 用户密码、是否删除匿名用户等。 4. **验证 MySQL 服务状态**: ```bash systemctl status mysql.service ``` #### 设置 ROOT 用户密码及允许远程...

    原创的一个PHP+MYSQL论坛

    这个论坛系统是由开发者独立创建的,旨在提供一个在线讨论平台,用户可以在上面发表话题、进行互动交流。PHP是一种广泛使用的开源脚本语言,特别适合于Web开发,而MySQL则是最流行的开源关系型数据库管理系统之一,...

    麒麟V10安装MySQL数据库

    为了提高系统的安全性,创建一个新的用户和用户组专门为MySQL服务,例如,可以创建名为'mysql'的用户和同名的用户组。 接着,创建MySQL所需的相关目录,比如数据存储目录、日志文件目录等。这些目录通常包括 `/var/...

    mysql-5.0.X 补丁

    MySQL 5.0版本是一个重要的里程碑,它引入了许多新功能和改进,同时也伴随着一些技术挑战,例如安全性问题。本补丁针对的是MySQL 5.0.x系列的一个特定安全漏洞,即身份认证漏洞。 身份认证漏洞在数据库系统中是个...

    mysql5.7.32最新稳定版本

    MySQL 5.7.32 是 MySQL 数据库管理系统的一个重要稳定版本,对于系统安全性和性能都有显著提升。在本文中,我们将深入探讨 MySQL 5.7.32 的主要特点、在 Linux 上的安装过程以及如何确保数据库的安全性。 1. **...

    spring+mybatis+mysql实现的用户登录功能

    在IT行业中,构建一个用户登录系统是常见的任务,特别是在Web应用程序...通过这些文件,我们可以构建一个完整的用户登录系统,提供安全的用户认证功能。理解并熟练掌握这些技术,对于开发高效、可靠的Web应用至关重要。

    mysql基础补充2-用户登录和权限问题

    MySQL 是一个功能强大且广泛使用的关系型数据库管理系统,它提供了丰富的用户登录和权限管理机制,确保数据库的安全性和可靠性。本文将详细介绍 MySQL 的用户登录和权限问题,以 MySQL 5.6 为例,帮助读者深入了解 ...

    mysql-8官方安装zip包

    首先,我们来看“mysql安装和初始化说明.txt”,这是一个重要的文档,它将指导用户如何正确地安装和配置MySQL服务器。安装过程通常包括以下几个步骤: 1. **解压文件**:用户需要将`mysql-8.0.12-winx64.zip`这个...

    arm架构mysql离线安装包

    对于ARM架构的MySQL,离线安装包可能是一个定制或优化过的版本,以适应特定的硬件需求。 3. **deb-mysqlserver**:在Linux世界中,`.deb`是Debian及其衍生系统(如Ubuntu)使用的软件包格式,用于安装和管理软件。`...

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

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

    mysql最佳安全配置手册

    上述安全配置的指导原则,旨在帮助用户从操作系统、文件系统、MySQL基础配置、权限控制、日志审计和身份认证等多方面构建起一个坚固的防御体系,以抵御来自网络的潜在安全威胁。安全配置的实施应结合实际的业务需求...

    基于Servlet JSP MySQL的用户注册模块V1.0

    这个模块允许用户通过一个交互式的网页界面输入他们的个人信息,如用户名、真实姓名和密码,然后将这些数据安全地存储到MySQL数据库中。在这个过程中,涉及到的关键技术包括Servlet、JSP和JDBC。 Servlet是Java编程...

Global site tag (gtag.js) - Google Analytics