このエントリーをはてなブックマークに追加


CentOSのPostgreSQLの起動時設定値を変更する

本記事はCentOS 5.8にRPMパッケージで提供されているPostgreSQLをインストールし、起動時の設定値を変更する方法を記します。

yumコマンドでPostgreSQLをインストール

インストールコマンドは以下の通り

yum install postgresql84-server

インストール後、以下のコマンドで初期化しPostgreSQLを起動しました。

# service postgresql initdb
データベースを初期化中:                                    [  OK  ]
# service postgresql start
postgresql サービスを開始中:                               [  OK  ]

nmapコマンドでポートを確認したところデフォルトポートである5432で動作しています。

# nmap localhost | grep postgres
5432/tcp open  postgres

今回はこのポート番号を変更してみます。

起動スクリプトの修正

/etc/init.d/postgresqlのスクリプトを確認してみると以下の記述があります。 以下、スクリプトの抜粋です。

   106 # Set defaults for configuration variables
   107 PGENGINE=/usr/bin
   108 PGPORT=5432
   109 PGDATA=/var/lib/pgsql/data
   110 PGLOG=/var/lib/pgsql/pgstartup.log

108行目のPGPORTを変更すれば、PostgreSQLのポート番号を変更できることがわかります。
しかし、RPMパッケージのバージョンアップなどで上書きされてしまった場合があるかもしれません。
他の設定方法がないかを確認してみたところ、すぐ下の行に以下の記述がありました。

   112 # Override defaults from /etc/sysconfig/pgsql if file is present
   113 [ -f /etc/sysconfig/pgsql/${NAME} ] && . /etc/sysconfig/pgsql/${NAME}

今回はこの113行目でPostgreSQLのポート番号を変更できるようにしてみます。

${NAME}と記述されているところですが、これは、起動スクリプトの90行目に記述されていました。

    90 # Find the name of the script
    91 NAME=`basename $0`/etc/sysconfig/pgsql/

よって、/etc/sysconfig/pgsql/にpostgresqlファイルを作成しportを変更してみます。

/etc/sysconfig/pgsql/postgresqlによるポート番号の変更

ポート番号変更のため、/etc/sysconfig/pgsql/にpostgresqlに以下のコマンドでPGPORT=15432をpostgresqlファイルに記述しました。

# echo "PGPORT=15432" > /etc/sysconfig/pgsql/postgresql
# cat /etc/sysconfig/pgsql/postgresql 
PGPORT=15432

PostgreSQLを再起動してみます。

# service postgresql restart
postgresql サービスを停止中:                               [  OK  ]
postgresql サービスを開始中:                               [  OK  ]

ポート番号を変更したので、postgresの表示がなくなりました。

# nmap localhost

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2012-04-16 14:09 JST
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 1678 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
25/tcp open  smtp

Nmap finished: 1 IP address (1 host up) scanned in 0.106 seconds

なので、netstat -antで確認すると15432ポートがLISTENされているのが確認できました。

# netstat -ant | grep 15432
tcp        0      0 127.0.0.1:15432             0.0.0.0:*                   LISTEN      

psqlコマンドで接続しています。
デフォルトポート(5432)では接続できず、修正した15432で接続が確認できました。

# su postgres
bash-3.2$ psql postgres
could not change directory to "/root"
psql: サーバに接続できませんでした: そのようなファイルやディレクトリはありません
                              ローカルにサーバが稼動していますか?
                              Unixドメインソケット"/tmp/.s.PGSQL.5432"で通信を受け付けていますか?
bash-3.2$ psql -p 15432 postgres
could not change directory to "/root"
psql (8.4.9)
Type "help" for help.

postgres=# \q
bash-3.2$ 

上記の操作によりPostgreSQLのポート番号が変更されたのが確認できました。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:08:00