mysqlのポート
squidの件で他のポートが気になったので調べてみた。
コマンドはnetstat -an。
すると、ssh、http、httpsの他にmysqlが外部に向けてlistenしていた。
logwatchではmysqlは表示されないのか本当に攻撃がないのか。
だからといって開けておくのも気持ち悪いのでlocalhostのみ開けるようにする。
上から順に試していった。
- /etc/sysconfig/iptablesを編集( 追加:-A INPUT -p tcp --dport 3306 -j DROP )
何も変わらず。
iptablesについて詳しく知らないのでなぜだめだったかは分からず、次へ。
下のほうに書いたので定義順とかだったのかも。
- /etc/my.cnfを編集( 追加:port=localhost:3306 )
というかmysqlがエラーで起動しなくなる。
port=にはホストIPの設定はできないらしい。
- /etc/my.cnfを編集( 追加:skip-networking )
mysqlは問題なし、wordpressも動く、いけるじゃんと思ったらjdbcがつまずいて大量の例外を吐く。(要は繋げない)
- /etc/my.cnfを編集( 追加:bind-address=127.0.0.1 )
これはjdbcも通った。skip-networkingがだめなのも含めて以下。
参考:http://dbaspot.com/mysql/301489-re-skip-networking-jdbc-connection.html
Java itself doesn't support unix domain sockets とあるけど、javaはUnixドメインソケット(≒プロセス間通信)できないから解決するには一旦外に出るが、skip-networkingでそれがはじかれるということ?
NamedPipeSocketFactoryというライブラリを使用すればいいとあったが、mysqlのオプションでbind-addressというのを見つけたので、そこにlocalhostを指定して解決。
ライブラリも面白そうだけど、やりたいことは多いので後回しで。