6.2 設定ファイルとパラメータ

PostgreSQLのサーバは、起動時に各種のパラメータが記述された設定ファイルを読み込みます。一部のパラメータは、起動後に一時的に変更できます。この節では、重要な設定ファイルであるpostgresql.confとpg_hba.conf、パラメータの設定と表示を行うSQL文であるSETとSHOWについて説明します。

postgresql.conf

postgresql.confファイルは、PostgreSQLサーバの動作に必要な各種パラメータの設定を行うファイルです。ファイルはテキストファイルで、以下の方法でパラメータを記述します。

  • 1行毎に1つのパラメータを指定する
  • パラメータの名前と値は、空白または等号で区切る
  • ハッシュ記号(#)は、以降行末までコメントであることを意味する
  • 単純でない識別子、または数値でないパラメータ値は一重引用符で括る
  • 数値の単位は以下を使用する
    大きさ: B(バイト)、kB(キロバイト)、MB(メガバイト)、GB(ギガバイト)、TB(テラバイト)
    時間: us(マイクロ秒)、ms(ミリ秒)、s(秒)、min(分)、h(時間)、d(日数)

設定できる主なパラメータを以下に示します。

パラメータ 省略値 説明
data_directory ConfigDir データベースクラスタのディレクトリ
listen_addresses localhost サーバが監視するIPアドレス(*は全てのホスト)
port 5432 サーバが監視するポート番号
max_connections 100 データベースサーバに同時接続できる最大数
authentication_timeout 1min クライアント認証を完了するまでの最大時間
password_encryption scram-sha-256 パスワードを暗号化するアルゴリズム
shared_buffers 128MB 共有メモリバッファのために使用するメモリ量
temp_buffers 8MB 一時バッファの最大メモリ量
wal_level replica WALに書かれる情報量(minimal<replica<logical)
log_destination stderr サーバメッセージのログ出力先
autovacuum on 自動バキューム機能を有効にするかどうか
datestyle ISO, YMD 日付・時刻の入力・表示形式
timezone Asia/Tokyo 表示用およびタイムスタンプ解釈用の時間帯


実際のpostgresql.confファイルの一部を以下に示します。

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'         # 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)
max_connections = 100                   # (change requires restart)
#superuser_reserved_connections = 3     # (change requires restart)
#unix_socket_directories = '/var/run/postgresql, /tmp'  # comma-separated list of directories
                                        # (change requires restart)

'change requires restart'と記載されているパラメータを変更したときは、サーバのreloadではなく、restartが必要です。

pg_hba.conf

pg_hba.confファイルは、クライアントの認証方法を設定します。ファイルは単純なテキストファイルで、以下の方法で認証方法を記述します。

  • 1行毎に1つの認証方法を指定する
  • 認証方法は原則として、接続方式、データベース、ユーザ、ホスト、認証方法の組み合わせで指定する
  • ファイルの先頭から条件を判定していき、最初に条件が合致した認証方法でクライアントを認証する
  • ハッシュ記号(#)は、以降行末までコメントであることを意味する

設定できる主なパラメータを以下に示します。

パラメータ 意味 設定可能な値
TYPE 接続方式 local | host | hostssl
DATABASE データベース名 all | 名前
USER ユーザ名 all | 名前
ADDRESS IPアドレス all | 0.0.0.0/0 | CIDR表記アドレス
METHOD 認証方法 peer | ident | scram-sha-256 | trust


postgresql.confファイルの例を以下に示します。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             postgres                                peer
# IPv4 local connections:
host    ossdb           all             127.0.0.1/32            scram-sha-256
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

上記の例で、IPv4のローカル接続の場合、ossdbデータベースではscram-sha-256で暗号化されたパスワード認証が行われ、それ以外のデータベースではOSのユーザ名によるident認証が行われます。

SET文

SET文は、postgresql.confファイル等で設定されている実行時のパラメータを一時的に変更します。形式は以下の通りです。

SET [SESSION | LOCAL] パラメータ名 {TO | =} {値 | DEFAULT}
  • SESSIONは現行セッション内での変更、LOCALは現行トランザクション内での変更となります。省略時はSESSIONです。
  • パラメータ名は、変更するパラメータの名前です。SET文では変更できないパラメータもあります。
  • 値は、変更後のパラメータの値です。DEFAULTはSET文実行前の値に再設定します。

例えば、以下のSET文は日付のスタイルを伝統的なSQL形式変更します。

SET datestyle TO sql;

伝統的なSQL形式では、月/日/年 の表示になります。

SHOW文

SHOW文は、postgresql.confファイル等で設定されている実行時のパラメータを表示します。形式は以下の通りです。

SHOW {パラメータ名 | ALL}
  • パラメータ名は、表示するパラメータの名前です。ALLを指定するとすべてのパラメータが表示されます。

例えば、以下のSHOW文は現在のタイムゾーンを表示します。

SHOW timezone;