PGBouncer:无法在右侧数据库上连接

时间:2018-09-10 14:51:17

标签: postgresql pg pgbouncer

我实际上遇到了一个问题。我已经在生产服务器上安装了pgbouncer,在该服务器上也有一个Odoo实例和postgresql。

也许:

在我的日志中,我有这个:

2018-09-10 16:39:16.389 10123 WARNING C-0x1eb5478: 
(nodb)/(nouser)@unix(18272):6432 pooler error: no such database: postgres
2018-09-10 16:39:16.389 10123 LOG C-0x1eb5478: (nodb)/(nouser)@unix(18272):6432 login failed: db=postgres user=oerppreprod

这是pgbouncer的实际配置:

pgbouncer_archive = host=127.0.0.1 port=5432 dbname=archive
admin_users = postgres
ignore_startup_parameters = extra_float_digits

同样,默认配置(我仅添加/编辑了此配置)。

他为什么要尝试连接postgres数据库?

当我返回上一个conf(没有PGBouncer,只是从端口6432交换到5432)时,一切都正常了。...

有什么主意吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

在我的情况下,我遇到了同样的问题。也许对某人有用:

我已经通过几个步骤解决了这个问题:

  1. 在每个请求的开始时-您的Framework或PDO(或其他)运行初始查询以检查您要查询的数据库是否存在于要处理的请求的postgres数据中。

  2. 我已替换了pgbouncer.ini文件的数据库部分中的“ user = project_user password = mytestpassword ”行的一部分。根据我的测试,如果您替换了这部分-pgbouncer将使用您的userlist.txt文件(或您选择的身份验证),在我的情况下,它将是userlist.txt。

  3. 添加了行“ postgres = host = 127.0.0.1 port = 5432 dbname = postgres

    [数据库]

    postgres = host = 127.0.0.1 port = 5432 dbname = postgres

    my_database =主机= 127.0.0.1端口= 5432 dbname = my_database

  4. 我的userlist.txt文件如下所示(我正在使用auth_type = md5,所以我的密码在md5中):

    “ my_user”“ md5passwordandsoelse”

  5. 我已将管理员用户添加到pgbouncer.ini文件中:

    admin_users = postgres,我的用户

在进行所有操作之后,我建议您通过以下简单查询来检查您正在从哪个用户运行查询:

select current_user;

最后,通过此查询,您必须接收选择的用户名(在我的情况下为-my_user) ps。我还必须提到,我使用的是127.0.0.1-因为我的pgbouncer与postgres安装在同一服务器上。