pgAdminからPostgreSQLへの接続設定

前回はクライアントPCであるWindows上にpgAdminをインストールしました。

これで必要なツールは揃ったわけですが、まだクライアントPC(Windows 7 x64)からPostgreSQLサーバー(CentOS7.2)へ接続することはできません。

PostgreSQLをインストールした直後の初期設定ではPostgreSQLを実行しているサーバー以外のクライアントからデータベースにアクセスすることはできないようになっています。

外部からのTCP接続を許可するとともに、PostgreSQLへのログインを許可する設定を行ってやる必要があります。

今回は、そのための設定方法について見ていきます。

postgresql.confの編集

PostgreSQLの設定は、設定ファイルを編集することで行います。

設定ファイルは複数ありますが、まず、postgresql.confファイルです。
このファイルでは最大接続数やログの保存方式などPostgreSQLに関する基本的な設定を行います。
基本的な設定と言っても、設定項目は非常にたくさんあり、初めは戸惑うかもしれません。

ここではまず、必要最低限な設定項目だけ見ていきましょう。

パラメータ名 内容
listen_addresses TCP接続を許可するIPアドレスを指定。デフォルトは「localhost」で、自分自身のサーバーからしか接続を許可しない。
port 待ち受けるポート番号を指定。デフォルトは5432。
log_destination PostgreSQLが出力するログ出力先を指定。

設定ファイルはテキストファイルですので、viなどのテキストエディタで編集できます。
各項目は「パラメータ名 = 設定値」という形式となります。また、文頭が「#」で始まっている行はコメント行と見なされ、設定反映されません。

postgresql.confが保存されているディレクトリパスは環境変数「$PGDATA」で定義されているパスになります。
echoコマンドで「$PGDATA」の値を確認してみましょう。

# su - postgres
$ echo $PGDATA

パスもわかったので、早速、viでpostgresql.confを開いて編集します。「listen_addresses」と「port」パラメータの値を以下のように変更してください。なお、以降の操作はrootユーザーで実施します。

# vi /var/lib/pgsql/9.5/data/postgresql.conf
 ~ 省略 ~
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'          # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 5432                             # (change requires restart)

 ~ 省略 ~

「listen_addresses」は変更前はlocalhostとなっていたと思います。「listen_addresses = ‘*’」とすることでネットワークにつながる全ての外部マシンから接続を許可することになります。待ち受けるポート番号はデフォルトのままとします。

pg_hda.confファイルの編集

pg_hda.confファイルはクライアントからのアクセス制御を設定するためのファイルです。デフォルト設定ではPostgreSQLが動作しているマシン上からしかログインを許可しない設定となっているため、外部マシンからのログインを許可するように変更します。

viでpg_hda.confを開きます。格納ディレクトリはpostgresql.confと同じく環境変数「$PGDATA」で定義されているパスになります。

ファイルを開いたら下のほうに青色の行を追加して上書き保存してください。

# vi /var/lib/pgsql/9.5/data/pg_hba.conf
 ~ 省略 ~

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
host    all             all             172.16.0.0/24           md5

 ~ 省略 ~

※172.16.0.0/24の部分は、172.16.0.1~172.16.0.254までのIPアドレスのホスト(クライアント)を許可するという意味になります。許可するネットワークアドレスは各々の環境に合わせて変更してください。

設定の反映

ここまでで、クライアントPC上のpgAdminからPostgreSQLへ接続するための定義変更は完了しました。

最後に変更した内容を反映してやります。

反映は、PostgreSQLを再起動すること行えます。

# systemctl stop postgresql-9.5
# systemctl start postgresql-9.5

以上でPostgreSQLにおける設定は完了です。ただ、PostgreSQLが動作しているOSのファイアウォールでクライアントPCからの接続を遮断してしまうことがあります。

次回はCentOS7におけるファイアウォール解除手順について見ていきます。