<p><strong><span style="color: #003366;">Mysql 大量 unauthenticated user</span><br /></strong>Friday, June 03, 2005, 12:29 - Apache & PHP & Mysql<br />近日在资料库方面,发现异常的连线状况<br />该狀況在 mysql 下指令 Show Processlist; 可以看到问题<br />该問題如下;</p> <p>: 3436942 : unauthenticated user : 192.168.0.52:49607 : : Connect : : login :<br />: 3436943 : unauthenticated user : 192.168.0.52:49608 : : Connect : : login :</p> <p>会有非常多的 unauthenticated user 尝试做登入使用 mysql 的情況<br />当这情况在无限制的发生时,就会造成系统的停顿</p> <p>在经过多方测试,以及官方的回應下<br />发现这属于官方一个系统上的特殊设定,亦可称呼他为 mysql 的 bug<br />不管连接的方式是经过 hosts 或是 IP 的模式,他都会对 DNS 做反查<br />mysqld 会尝试去反查 IP -> DNS ,由于反查解析过慢,无法应对快速多量的查詢<br />反查是上层 ISP 所掌控,并不是我们可以解决及要求的</p> <p>最简单的方法:</p> <p><span style="color: #f00"><strong>修改 /etc/hosts 文件,添加要访问的IP地址<br />172.18.9.1 xxx</strong></span></p> <p>此方法测试有效,另外网上还有其它方法,仅限本机连接,加入skip-name-resolve就只能本机访问了。</p> <p>----------------------------------------------------------------</p> <p>在知道问题的症结点后,就有了相对应的解决方法<br />其方法分两个步骤,第一是开启 Mysqld 的时候加入特定的参数启动<br />第二就是修改 mysql 的连接设定等,如下所示</p> <p>启动参数; with --skip-name-resolve =>这样就可以关闭反查动作</p> <p>更改 my.cnf,加强以下设置:<br />[mysqld]<br />datadir=/services/mysql/<br />socket=/tmp/mysql.sock<br />port=3306<br />set-variable = key_buffer_size=64M<br />set-variable = max_connections=1024<br />set-variable = interactive_timeout=30<br />set-variable = wait_timeout=30<br />set-variable = join_buffer_size=10M<br />set-variable = long_query_time=20<br />set-variable = table_cache=256<br />set-variable = sort_buffer=4M<br />set-variable = record_buffer=1M<br />set-variable = back_log=500</p> <p>[mysqld.server]<br />user=mysql<br />basedir=/usr/local</p> <p>经过以上设置和重新启动后,直到现在还没有看到一个 unauthenticated user 的情况发生<br />近日还是会持续的观察 Mysql 的运作情况,如有问题将会持续的禀报及解决</p> <p><br />处理:</p> <p>/usr/local/libexec/mysqld --basedir=/usr/local/ --datadir=/usr/local/var/ --user=mysql --pid-file=/usr/local/var//test.pid --skip-locking --port=3306 --socket=/tmp/mysql.sock --skip-name-resolve</p> <p><br />/etc/my.cnf中加入skip-name-resolve</p> <p>cd /etc/rc.d/init.d/</p> <p>./mysqld restart</p> Loading... <p><strong><span style="color: #003366;">Mysql 大量 unauthenticated user</span><br /></strong>Friday, June 03, 2005, 12:29 - Apache & PHP & Mysql<br />近日在资料库方面,发现异常的连线状况<br />该狀況在 mysql 下指令 Show Processlist; 可以看到问题<br />该問題如下;</p> <p>: 3436942 : unauthenticated user : 192.168.0.52:49607 : : Connect : : login :<br />: 3436943 : unauthenticated user : 192.168.0.52:49608 : : Connect : : login :</p> <p>会有非常多的 unauthenticated user 尝试做登入使用 mysql 的情況<br />当这情况在无限制的发生时,就会造成系统的停顿</p> <p>在经过多方测试,以及官方的回應下<br />发现这属于官方一个系统上的特殊设定,亦可称呼他为 mysql 的 bug<br />不管连接的方式是经过 hosts 或是 IP 的模式,他都会对 DNS 做反查<br />mysqld 会尝试去反查 IP -> DNS ,由于反查解析过慢,无法应对快速多量的查詢<br />反查是上层 ISP 所掌控,并不是我们可以解决及要求的</p> <p>最简单的方法:</p> <p><span style="color: #f00"><strong>修改 /etc/hosts 文件,添加要访问的IP地址<br />172.18.9.1 xxx</strong></span></p> <p>此方法测试有效,另外网上还有其它方法,仅限本机连接,加入skip-name-resolve就只能本机访问了。</p> <p>----------------------------------------------------------------</p> <p>在知道问题的症结点后,就有了相对应的解决方法<br />其方法分两个步骤,第一是开启 Mysqld 的时候加入特定的参数启动<br />第二就是修改 mysql 的连接设定等,如下所示</p> <p>启动参数; with --skip-name-resolve =>这样就可以关闭反查动作</p> <p>更改 my.cnf,加强以下设置:<br />[mysqld]<br />datadir=/services/mysql/<br />socket=/tmp/mysql.sock<br />port=3306<br />set-variable = key_buffer_size=64M<br />set-variable = max_connections=1024<br />set-variable = interactive_timeout=30<br />set-variable = wait_timeout=30<br />set-variable = join_buffer_size=10M<br />set-variable = long_query_time=20<br />set-variable = table_cache=256<br />set-variable = sort_buffer=4M<br />set-variable = record_buffer=1M<br />set-variable = back_log=500</p> <p>[mysqld.server]<br />user=mysql<br />basedir=/usr/local</p> <p>经过以上设置和重新启动后,直到现在还没有看到一个 unauthenticated user 的情况发生<br />近日还是会持续的观察 Mysql 的运作情况,如有问题将会持续的禀报及解决</p> <p><br />处理:</p> <p>/usr/local/libexec/mysqld --basedir=/usr/local/ --datadir=/usr/local/var/ --user=mysql --pid-file=/usr/local/var//test.pid --skip-locking --port=3306 --socket=/tmp/mysql.sock --skip-name-resolve</p> <p><br />/etc/my.cnf中加入skip-name-resolve</p> <p>cd /etc/rc.d/init.d/</p> <p>./mysqld restart</p> 最后修改:2012 年 03 月 02 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 支持就是力量