`
- 浏览:
74208 次
- 来自:
...
-
前两天在帮朋友整理他的主页空间时候,发现的一点关于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的默认支持。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
mysql是线程不安全的,mysql不是线程安全的,多线程共用同一个mysql连接是会崩溃的 QT的QSqlDatabase是基于mysql的,所以一样是线程不安全的 现讲明mysql为什么是线程不安全的,以及在多线程环境下如何使用mysql,...
MySqL课件 用于了解MySqL中用户和数据安全相关的内容 实践操作均可实现
•一 : mysql 用户管理与恢复root 密码[1] •1 新建用户[2] •2 查看用户信息与显示登录用户[3] •3 重命名用户[4] •4 删除用户[5] •5 修改密码[6] •6 恢复root 密码[7] •6.1 修改配置文件,设置跳过密码项[8]...
安装完MySQL后,系统默认会创建一个不需要密码的root用户,和一个无用户名无密码的匿名用户(Anonymous Account)。进行下面的初始化操作以合理授权,增强安全。 设置root密码先以root身份登入mysql -u root,设置...
安装完MySQL以后会自动创建一个root用户和一个匿名用户,对于root大家都非常注意,而这个匿名用户很多人都会忽略,大概是因为匿名用户默认设定为只能在本地使用的缘故吧。 但如果MySQL要作为数据库提供给Web服务器...
MySQL使用了很多授权表来跟踪用户和这些用户的不同权限。这些表就是在mysql数据库中的MyISAM表。将这些安全信息保存在MySQL中是非常有意义的。因此,我们可以使用标准的SQL来设置不同的权限。一般在MySQL数据库中...
整理的一些mysql数据库安全规范,解决数据库部分安全问题。
mysql的安全没有mssql、oracle做得自动化,更多的需要dba及管理员去参入。值得大家关注~
14.1.4 编译并安装用户定义函数 14.2 增加一个新的原生(native)函数 15 为MySQL增加新过程 15.1 analyse过程 15.2 编写一个过程 16 MySQL对 ODBC 支持 16.1 MyODBC 支持的操作系统 ...
1.修改root用户口令,删除空口令 2.删除默认数据库和数据库用户 3.改变默认mysql管理员帐号 4.关于密码的管理 5.使用独立用户运行msyql 6.禁止远程连接数据库 7.限制连接用户的数量 8.用户目录权限限制 9.命令历史...
每个数据库都有一个用户名列表,每个用户名都有相关的口令,以防止未经授权使用,每个用户有一个安全域,它包含一组属性: 对用户可用的操作 每个用户系统资源的限制 每个用户数据资源的访问限制 ;一般来说,数据库...
本手册介绍了不包含在MySQL 8的每一个版本的功能;这种功能可能不包含在MySQL 8版授权给你。如果你有任何问题的特征包含在你的MySQL 8版,指的是你的MySQL 8许可协议或与Oracle的销售代表。笔记详细介绍每个版本的...
14.1.2 参数处理 14.1.3 返回值和出错处理 14.1.4 编译并安装用户定义函数 14.2 增加一个新的原生(native)函数 15 为MySQL增加新过程 15.1 analyse过程 15.2 编写一个过程 ...
mysql查询多少秒内的数据,分类统计用户,sum()函数的一个特殊用法 一条比较经典的语句mysql查询多少秒内的数据,分类统计用户,sum()函数的一个特殊用法 一条比较经典的语句mysql查询多少秒内的数据,分类统计用户,...
这个文档里面包含MySQL的基本操和MySQL安全加固两个方面。 基础部分包括: 1.数据库管理 2.数据库结构管理 3.增删改查 4.grant命令 5.用户权限 加固部分包括: 1.删除默认的数据库用户和数据库 2.不适用默认的密码和...
MySQL是多平台的数据库,不可避免的默认配置也是适合多种情况的需求,因此需要用户需要在自定义的环境下对MySQL的使用进行加固
本手册介绍了不包含在MySQL 8的每一个版本的功能;这种功能可能不包含在MySQL 8版授权给你。如果你有任何问题的特征包含在你的MySQL 8版,指的是你的MySQL 8许可协议或与Oracle的销售代表。 笔记详细介绍每个版本...
E096-数据库安全-mysql用户权限设置及登陆限制
在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...