Mysql默认设置的危险性分析第1/2页
更新时间:2008年09月30日 21:49:04 作者:
一.mysql默认的授权表二.缺乏日志能力 三.my.ini文件泄露口令
四.服务默认被绑定全部的网络接口上 五.默认安装路径下的mysql目录权限
默认安装的mysql服务不安全因素涉及的内容有:
一.mysql默认的授权表
二.缺乏日志能力
三.my.ini文件泄露口令
四.服务默认被绑定全部的网络接口上
五.默认安装路径下的mysql目录权限
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一.mysql默认的授权表
由于mysql对身份验证是基于mysql这个数据库的,也叫授权表。所有的权限设置都在这里了。
我们只讨论最为重要的一个表 user表。它控制的是接受或拒绝连接。
先看一下
select host,user,password,Delete_priv from user;
+-----------+------+------------------+-------------+
| host | user | password | Delete_priv |
+-----------+------+------------------+-------------+
| localhost | root | 67457e226a1a15bd | Y |
| % | root | | Y |
| localhost | | | Y |
| % | | | N |
+-----------+------+------------------+-------------+
现在新的版本,安装完毕都会出现一个快速设置窗口,用于设置口令。
以上,就是user表里的内容(略了点)看看有什么问题?
我们知道mysql的验证方式是比较特殊的,它基于两个2个信息来进行的
1.从那里连接
2.用户名
第一条没什么问题,当然口令必须是安全的。
第二条从任何主机,以用户root,不需要口令都可以连接,权限为所有的权限。(注:这里的权限是全局权限)
第三条从本地主机,任何用户名(注:user为空白,不表示不需要用户名),不需要口令,都可以连接,所有的权限
第四条从任何主机,任何用户名,不需要口令,都可以连接,无任何权限。
可以看出,2\3\4都是不安全的,如何攻击这里就不说了,请参看资料文库。
如果你mysql只允许本地连接,删除host的%和user中的nul(表示空)
delete from user where host='% ';
delete from host where user=' ';
最后的user表,看起来因该是这个样子
+-----------+------+------------------+-------------+
| host | user | password | Delete_priv |
+-----------+------+------------------+-------------+
| localhost | root | 67457e226a1a15bd | Y |
+-----------+------+------------------+-------------+
最后需要刷新授权表,使其立刻生效
flush privileges;
如果你的mysql需要被远程使用,需要为%段中的root帐号,加上一个安全的密码
update user set password=password(‘youpass‘) where host=‘%‘;
其中youpass,就是口令
mysql> select host,user,password,Delete_priv from user;
+-----------+------+------------------+-------------+
| host | user | password | Delete_priv |
+-----------+------+------------------+-------------+
| localhost | root | 67457e226a1a15bd | Y |
| % | root | 77c590fa148bc9fb | Y |
+-----------+------+------------------+-------------+
一.mysql默认的授权表
二.缺乏日志能力
三.my.ini文件泄露口令
四.服务默认被绑定全部的网络接口上
五.默认安装路径下的mysql目录权限
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一.mysql默认的授权表
由于mysql对身份验证是基于mysql这个数据库的,也叫授权表。所有的权限设置都在这里了。
我们只讨论最为重要的一个表 user表。它控制的是接受或拒绝连接。
先看一下
select host,user,password,Delete_priv from user;
+-----------+------+------------------+-------------+
| host | user | password | Delete_priv |
+-----------+------+------------------+-------------+
| localhost | root | 67457e226a1a15bd | Y |
| % | root | | Y |
| localhost | | | Y |
| % | | | N |
+-----------+------+------------------+-------------+
现在新的版本,安装完毕都会出现一个快速设置窗口,用于设置口令。
以上,就是user表里的内容(略了点)看看有什么问题?
我们知道mysql的验证方式是比较特殊的,它基于两个2个信息来进行的
1.从那里连接
2.用户名
第一条没什么问题,当然口令必须是安全的。
第二条从任何主机,以用户root,不需要口令都可以连接,权限为所有的权限。(注:这里的权限是全局权限)
第三条从本地主机,任何用户名(注:user为空白,不表示不需要用户名),不需要口令,都可以连接,所有的权限
第四条从任何主机,任何用户名,不需要口令,都可以连接,无任何权限。
可以看出,2\3\4都是不安全的,如何攻击这里就不说了,请参看资料文库。
如果你mysql只允许本地连接,删除host的%和user中的nul(表示空)
delete from user where host='% ';
delete from host where user=' ';
最后的user表,看起来因该是这个样子
+-----------+------+------------------+-------------+
| host | user | password | Delete_priv |
+-----------+------+------------------+-------------+
| localhost | root | 67457e226a1a15bd | Y |
+-----------+------+------------------+-------------+
最后需要刷新授权表,使其立刻生效
flush privileges;
如果你的mysql需要被远程使用,需要为%段中的root帐号,加上一个安全的密码
update user set password=password(‘youpass‘) where host=‘%‘;
其中youpass,就是口令
mysql> select host,user,password,Delete_priv from user;
+-----------+------+------------------+-------------+
| host | user | password | Delete_priv |
+-----------+------+------------------+-------------+
| localhost | root | 67457e226a1a15bd | Y |
| % | root | 77c590fa148bc9fb | Y |
+-----------+------+------------------+-------------+
相关文章
win2003服务器下配置 MySQL 群集(Cluster)的方法
MySQL 群集是 MySQL 适合于分布式计算环境的高可用、高冗余版本。它采用了 NDB Cluster 存储引擎,允许在 1 个群集中运行多个 MySQL 服务器。2010-12-12
windows 64位下mysql8.0.25安装配置教程(最详细!)
之前一直在用 5.7 版本,竟然一下子跳到 8.0了,下面这篇文章主要给大家介绍了关于在windows 64位下mysql8.0.25安装配置教程,文章通过图文介绍的非常详细,需要的朋友可以参考下2022-03-03


最新评论