1. ホーム
  2. postgresql

[解決済み] オペレーショナルエラーです。ERROR: pgbouncerはサーバーに接続できません。

2022-02-27 09:34:05

質問

を行おうとしています。 python manage.py syncdb が表示され続けています。 OperationalError: ERROR: pgbouncer cannot connect to server .pgbouncer.logには、次のような行があります。

2017-09-19 19:44:15.107 1128 LOG C-0x8a9930: mydb/myuser@unix:6432 closing because: pgbouncer cannot connect to server (age=0)
2017-09-19 19:44:15.107 1128 WARNING C-0x8a9930: mydb/myuser@unix:6432 Pooler Error: pgbouncer cannot connect to server
2017-09-19 19:44:15.107 1128 LOG S-0x8c72e0: mydb/[email protected]:5432 new connection to server
2017-09-19 19:44:15.107 1128 LOG C-0x8a9930: mydb/myuser@unix:6432 login failed: db=mydb user=myuser
2017-09-19 19:44:30.108 1128 LOG S-0x8c72e0: mydb/[email protected]:5432 closing because: connect failed (age=15)

必要な場合 ps -aef | grep pgbouncer が得られます。

postgres  1128     1  0 18:38 ?        00:00:00 /usr/sbin/pgbouncer -d /etc/pgbouncer/pgbouncer.ini
myuser    1919  1533  0 19:45 pts/0    00:00:00 grep --color=auto pgbouncer

さらに grep port /etc/pgbouncer/pgbouncer.ini の結果になります。

;;   dbname= host= port= user= password=
mydb = host=xx.xxx.xxx.xxx port=5432 dbname=mydb
;forcedb = host=127.0.0.1 port=300 user=baz password=foo client_encoding=UNICODE datestyle=ISO connect_query='SELECT 1'
listen_port = 6432

最後に、関連する部分である settings.py が含まれています。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydb',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': '/var/run/postgresql',
        'PORT': '6432',
    }


を回しました。 log_connections から on をpostgresql.confに追加し、PGを再起動して再挑戦しました。以下が該当の行です。

2017-09-20 07:50:59 UTC LOG:  database system is ready to accept connections
2017-09-20 07:50:59 UTC LOG:  autovacuum launcher started
2017-09-20 07:51:00 UTC LOG:  connection received: host=[local]
2017-09-20 07:51:00 UTC LOG:  incomplete startup packet
2017-09-20 07:51:00 UTC LOG:  connection received: host=[local]
2017-09-20 07:51:00 UTC LOG:  connection authorized: user=postgres database=postgres
2017-09-20 07:51:01 UTC LOG:  connection received: host=[local]
2017-09-20 07:51:01 UTC LOG:  connection authorized: user=postgres database=postgres
2017-09-20 07:51:01 UTC LOG:  connection received: host=[local]
2017-09-20 07:51:01 UTC LOG:  connection authorized: user=postgres database=postgres

接続はできているようですが userdatabase の名前は postgres . これらの認証情報は、私が pgbouncer.ini .

しかし、明示的に myuser に記述されている接続文字列で pgbouncer.ini を導きます。

2017-09-20 09:37:37 UTC FATAL:  Peer authentication failed for user "myuser"
2017-09-20 09:37:37 UTC DETAIL:  Connection matched pg_hba.conf line 90: "local   all             all                                     peer"

まったくもって困ったものだ。

どうすればいいのでしょうか?

のこの行に起因しているようです。 settings.py :

'PORT': '6432',

コメントしたらpgbouncerが動作するようになりました。

でも、「なぜ」なのかはわからない。

私の場合、PgbouncerとPGは1つのサーバに共存しています。私は過去にそれらを異なるVM上で問題なくセットアップしました(そして、コメントする必要もありません)。 'PORT': '6432', )