Невозможно подключиться к консоли администратора PgBouncer - PullRequest
0 голосов
/ 25 апреля 2020

Я не могу подключиться к моей консоли администратора PgBouncer. Ниже моя pgbouncer.ini конфигурация.

################## Auto generated ##################
[databases]
* = host=postgresql.default.svc.cluster.local port=5432 user=someuser

[pgbouncer]
listen_addr = 0.0.0.0
listen_port = 5432
unix_socket_dir =
user = postgres
auth_file = /etc/pgbouncer/userlist.txt
auth_type = md5
pool_mode = transaction
max_client_conn = 3000
default_pool_size = 50
min_pool_size = 10
reserve_pool_size = 10
reserve_pool_timeout = 5
max_db_connections = 50
max_user_connections = 50
ignore_startup_parameters = extra_float_digits

# Log settings
admin_users = postgres

# Connection sanity checks, timeouts
server_reset_query = DISCARD ALL
server_idle_timeout = 100

# TLS settings

# Dangerous timeouts
################## end file ##################

У меня есть файл userlist.txt, который содержит

"someuser" "password"

Я попытался подключиться к консоли администратора с помощью psql -h localhost -p 5432 -U someuser -d pgbouncer, но получаю с этой ошибкой

psql: ERROR: not allowed

Я также пытался подключиться, используя psql -h localhost -p 5432 -U postgres -d pgbouncer, но psql throws

psql: ERROR: no such user: postgres

FYI, я использую edoburu/pgbouncer:1.9.0 Docker image .

1 Ответ

0 голосов
/ 26 апреля 2020

Поскольку вы, кажется, подключаетесь с того же компьютера, на котором работает pgbouncer, я бы попробовал подключиться через Unix сокет:

  • Шаг 1: Установите unix_socket_dir=/tmp в pgbouncer.ini , Подробнее см. В документах
  • Шаг 2: Соединитесь с помощью Unix сокета с пользователем pgbouncer и без пароля:
$ psql --host=/tmp --username=pgbouncer --no-password pgbouncer

psql (12.2 (Ubuntu 12.2-2.pgdg18.04+1), server 1.8.1/bouncer)
Type "help" for help.

pgbouncer=#

Почему это работает

Согласно pgbouncer-docs , это позволит вам подключаться локально без пароля:

Кроме того, имя пользователя pgbouncer разрешено входить без пароля, если вход в систему через Unix сокет и клиент имеет такой же Unix пользовательский UID в качестве запущенного процесса.

(Мой акцент.)

...