web-dev-qa-db-ja.com

Postgresはlisten_addresses設定を無視しているようです

Postgres 9.5.7データベース(Ubuntu 16.04を実行)でリモートクライアントアクセスを無効にしようとしています。

私は正しい変更(下記を参照)であると私が思ったものを無駄にした。私の変更が機能しない理由は2つ考えられます。

  • 間違ったファイルを編集しています
  • サービスを適切に再起動していません

私はこれらを除外することを考えましたが、リモートクライアントはまだ話すことができます。それで私は何が欠けていますか?

実際、私がしようとしているのは、リモートクライアントアクセスを有効にした変更を元に戻し、それらの変更をキャプチャしてソルトスタックに再適用できるようにすることです。ソルトを介してデプロイメントテストの実行を開始する前に、リモートアクセスが無効になっていることを確認します。これにより、ソルトスタックが変更を行っていることを確認できます。

一部のデータ

編集中の同じ構成ファイルを使用してpostgresを開始しています(読みやすくするためにps出力を再フォーマット)

postgres@testweb:~$ ps -eaf | grep bin/post
postgres [snip] /usr/lib/postgresql/9.5/bin/postgres 
                -D /var/lib/postgresql/9.5/main 
                -c config_file=/etc/postgresql/9.5/main/postgresql.conf

postgresはlocalhostポートのみをリッスンするように構成されています(これは以前は '*'でした)

postgres@testweb:~$ grep listen_addresses /etc/postgresql/9.5/main/postgresql.conf
listen_addresses = 'localhost'      # what IP address(es) to listen on;

ホストベースの認証はlocalhostに設定されています。アクセスを無効にする場合、これは問題になりませんか?私の理解では、listen_addresses='localhost'の場合、リモートクライアントアクセスは機能しません。

postgres@testweb:~$ grep ^Host /etc/postgresql/9.5/main/pg_hba.conf
Host    all             all             127.0.0.1/32            md5
Host    all             all             ::1/128                 md5

正しい構成ファイルを編集していますが、listen_addressesは*と主張しています

postgres@testweb:~$ sql
psql (9.5.7)
Type "help" for help.

postgres=# show config_file;
           config_file
------------------------------------------
/etc/postgresql/9.5/main/postgresql.conf
(1 row)

postgres=# show hba_file;
               hba_file
--------------------------------------
/etc/postgresql/9.5/main/pg_hba.conf
(1 row)

postgres=# show listen_addresses;
 listen_addresses
------------------
*

すべてのインターフェイスでまだリッスンしているOSレベルでの証明(つまり、show list_addresses;コマンドが有効であること)。

postgres@testweb:~$ netstat -nlt | grep 5432
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN
tcp6       0      0 :::5432                 :::*                    LISTEN

conf.dにカスタムconfファイルがありますが、リモートクライアントアクセスを許可するためにこれに触れなかったため、読み取られているかどうかは不明です。とにかく、今は欲しいものに設定されています

postgres@testweb:~$ cat /etc/postgresql/9.5/main/conf.d/custom.conf
listen_addresses = 'localhost'
shared_buffers = 4011MB
work_mem = 320MB
maintenance_work_mem = 1018MB
effective_cache_size = 8022MB
shared_preload_libraries = 'pg_stat_statements'

サーバーに浮遊構成ファイルが表示されない

postgres@testweb:~$ locate postgresql.conf
/etc/postgresql/9.5/main/postgresql.conf
/etc/postgresql/9.5/main/postgresql.conf.bak
/usr/lib/tmpfiles.d/postgresql.conf
/usr/share/postgresql/9.5/postgresql.conf.sample

postgres@testweb:~$ locate pg_hba.conf
/etc/postgresql/9.5/main/pg_hba.conf
/usr/share/postgresql/9.5/pg_hba.conf.sample

service postgresql restartを使用してpostgresインスタンスを再起動します(念のため、サーバーを再起動しようとしました(ugh)。それでもまだうまくいきません。service postgresql stopを実行すると、リモートクライアントが失敗することを確認しました。

当然のことながら、リモートクライアントアクセスを有効にするために、他のことを微調整したに違いありません。しかし、私の人生にとって、それが何であったかを考えることはできません。 (2つのconfファイルで)覚えている変更を元に戻しました。私は何かを見逃していたに違いありません...しかし、何ですか?

EDIT(s)

コメントに従って、ホストを指定してログインすると、同じ結果が表示されます(AFAIK、postgresユーザーのパスワードを設定したことがないため、rootとしてアクセスしています)。

root@testweb:~# Sudo -u postgres -h localhost psql
psql (9.5.7)
Type "help" for help.

postgres=# show listen_addresses;
 listen_addresses
------------------
 *
(1 row)

postgres=# show config_file;
               config_file
------------------------------------------
 /etc/postgresql/9.5/main/postgresql.conf
(1 row)

別のコメントによると、ここにservice postgresql restartを実行した後の出力があります...きれいに見えます(最後の行がわからない... 研究 (ダニエルに感謝)それが「重要でない」ことを示します)

2017-07-18 17:43:16.440 MDT [4911] LOG:  database system was shut down at 2017-07-18 17:43:15 MDT
2017-07-18 17:43:16.444 MDT [4911] LOG:  MultiXact member wraparound protections are now enabled
2017-07-18 17:43:16.447 MDT [4910] LOG:  database system is ready to accept connections
2017-07-18 17:43:16.447 MDT [4915] LOG:  autovacuum launcher started
2017-07-18 17:43:16.848 MDT [4917] [unknown]@[unknown] LOG:  incomplete startup packet
8
stv

$ PGDATAのpostgresql.auto.confファイルを確認してください。

誰かがALTER SYSTEMコマンドを使用して設定を変更すると、そこに値が表示されます。

postgresql.auto.confpostgresql.confの後に読み取られ、このファイルに書き込まれた各設定はpostgresql.conf...の設定を上書きします。

一見の価値あり...

8
Arkhena