PostgreSQLのポート番号を変更する

PostgreSQLのポート番号はデフォルト5432/TCPを使うようになっているんですが、デフォルトのままだと攻撃対象になりやすいので変更した。(なお本来は、そもそも物理的に攻撃対象にならないPrivate IP のポートを使うべきです、はい)

簡単簡単、と思ったら意外にハマった/(^o^)\のでメモメモ。



まず、普通に考えてPostgreSQLの設定ファイルを変更する。設定ファイルは、通常、
/var/lib/pgsql/data/
にある
postgresql.conf
である。

この中の2行を変更すればよい。

#listen_address = 'localhost'

となっているところを、例えば、

listen_address = 'localhost,192.168.0.100'

のように変更する。複数のアドレスはカンマで区切り、両端を'で囲めばよい。


次にポート番号を変更する。

#port = 5432

とデフォルトではコメントアウトされているので、#を外し、任意のポート番号を記述する。


変更したらpostgresqlを再起動する。

> sudo /etc/init.d/postgresql restart

さて、これで変更できたかな?と思ったら甘かったw 繋がらない。








よくよく調べたら、postgresqlの起動スクリプト中に起動時ポート番号が
ハードコードされていたよ\(^o^)/なんだよそれw

/etc/init.d/postgresql
を開いて、
PGPORT=5432
のところを上記のpostgresql.confと同じ値に変更する。

これでpostgresqlを再起動したら無事つながりました。