PostgreSQL

postgresql.conf

postgreSQL全体を制御するファイルです。いくつかある設定ファイルの中で最も更新頻度が高いとおもわれます。

$ ls -lt $PGDATA/postgresql.conf
-rw-------. 1 postgres postgres 28093  9月  5 21:34 /var/lib/pgsql/13/data/postgresql.conf
[postgres@vm022 data]$

REPORTING AND LOGGING

log_statement

実行したSQLをログファイルへ出力するには

# デフォルトはコメントアウトされている
#log_statement = 'none'                 # none, ddl, mod, all
log_statement = 'all'                   # none, ddl, mod, all
log_min_duration_statement

SQLの実行に指定した「ミリ秒以上」所要した場合に、対象SQLと所要時間をログファイルに記録します。デフォルトはコメントアウトされている。

log_min_duration_statement = 100        # -1 is disabled, 0 logs all statements
                                        # and their durations, > 0 logs only
                                        # statements running at least this number
                                        # of milliseconds

CONNECTIONS AND AUTHENTICATION

listen_addresses と port

インストールした状態ではいずれの項目もコメントアウトされていて、外部からの接続ができないようになっています。

# - 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)

CLIENT CONNECTION DEFAULTS

lc_messages

なぜかlc_messages = ‘ja_JP.utf8’ではWindows環境のpsqlでのログインエラーメッセージが文字化けするんですよ、、ログインした後のエラーメッセージは文字化けすることなく表示されるのにです。

-- powershell から以下実行しています
--
sooni >> psql -U postgres -d postgress -h myposdb
ユーザー postgres のパスワード:
psql: エラー: "myposdb" (192.168.3.22)、ポート 5432でのサーバーへの接続に失敗しました: FATAL:  繝ヲ繝シ繧カ繝シ"postgres"縺ョ繝代せ繝ッ繝シ繝芽ェ崎ィシ縺ォ螟ア謨励@縺セ縺励◆
sooni >>

いろいろ試行錯誤するもわからずで、、根本解決にはならないですが、、lc_messages = ‘en_US’ にしてとりあえず対応しました。(サービス再起動忘れずに)

# These settings are initialized by initdb, but they can be changed.
#lc_messages = 'ja_JP.utf8'                   # locale for system error message
lc_messages = 'en_US'                   # locale for system error message

この通り文字化けは解決します

sooni >> psql -U postgres -d postgress -h myposdb
ユーザー postgres のパスワード:
psql: エラー: "myposdb" (192.168.3.22)、ポート 5432でのサーバーへの接続に失敗しました: FATAL:  password authentication failed for user "postgres"
sooni >>

--当然ながらpsqlを使いログインした後に発生するエラーメッセージも英語となります
postgres=> create database smtdb01
postgres-> ;
ERROR:  permission denied to create database
postgres=>

lc_messagesの確認方法

showコマンド、もしくはpg_settingsビューにて確認する事ができます

-- showコマンドでの確認
myposdb=> show lc_messages;
 lc_messages
-------------
 en_US
(1 行)

-- pg_settingsビューでの確認
myposdb=> select name,setting,context,vartype,reset_val
myposdb-> from pg_settings where name = 'lc_messages';
    name     | setting |  context  | vartype | reset_val
-------------+---------+-----------+---------+-----------
 lc_messages | en_US   | superuser | string  | en_US
(1 行)


myposdb=>
試行錯誤
  • 環境変数PGCLIENTENCODINGをUTF8に設定
    $env:PGCLIENTENCODING=”UTF8″
  • chcpでコードページをUTF8にする(chcp 65001)
  • powershell v5.1x/v7.xからの実行、dosコマンドからの実行も改善せず

pg_hba.conf

pg_hba.conf
ホストベース認証設定ファイルクライアント認証に関する情報を持つファイルです。5つのフィールドにそれぞれ値を定義する事で、PostgreSQLデータベースへの接続を許可または拒否することができます。このファイルでは、どのユーザがどのデータベー...

postgreSQLサービス再起動

スポンサーリンク
コピペで使う
タイトルとURLをコピーしました