« 维基百科--知识的源头 | 首 页 | Alexa排名代码 »

2004 年 08 月 06 日

去掉MySQL默认的3306对Internet端口

| 分类: 服务器日志 Server Log |

今天发现自己的MySQL有对外绑定的端口,感觉不太有用,因为我都是直接登陆主机运行MySQL的(MySQL的host里面都是localhost),所以想了一些方法解决这个问题。
以下是事前查询的内容。

netstat -anlp | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 638/mysqld
unix 2 [ ACC ] STREAM LISTENING 12305521 638/mysqld /tmp/mysql.sock

首先想了用Iptables阻挡所有对3306的连接。

# iptables -A RH-Lokkit-0-50-INPUT -p tcp --destination-port 3306 -j REJECT

可能是对Iptables学习不够,没有什么作用,还是扫描的出来有MySQL端口。
查询了CU,发现有一篇正和我意的文章:如何更改 MYsql的 監聽 地址?
里面对修改的建议是
*安全配置*
为了数据的安全,可以考虑让MySQL只守候在127.0.0.1上,这样从Internet上就无法直接访问数据库了。
修改/etc/init.d/mysql文件
在start部分找到类似下面这行
$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file &

修改成
$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file --bind-address=127.0.0.1 &

重起MySQL
/etc/init.d/mysql restart

最后netstat -l确认一下:
tcp 0 0 localhost:mysql *:* LISTEN

OK

而我修改的应该是/usr/local/mysql/support-files/mysql.server 文件中的

$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file >/dev/null 2>&1 & 为 $bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file --bind-address=127.0.0.1 >/dev/null 2>&1 &

重启mysql (kill了进程,然后用 /usr/local/mysql/support-files/mysql.server start)

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1041/mysqld
unix 2 [ ACC ] STREAM LISTENING 12329772 1041/mysqld /tmp/mysql.sock

即可!

(END)

引用

引用本文的 URL:
http://weblog.kreny.com/cgi-bin/mt/mt-tb.cgi/115.

评论 (1 条)

John Mike
2005年06月15日 11:45

好文章,谢谢了。

发表评论

(如果您还为在此成功留言,也许是因为需要管理员逐一审核留言内容后放可看到您的评论。请稍后并感谢您的耐心等待。)

阅览更多文章请访问 首页过去的存档