Postgres 部署信息:
- 版本:13.3
- 部署:Kubernetes、Helm
- 提供者:https ://www.crunchydata.com/(pgo_client_version:4.7.0)
目标:
- 启用连接池支持
- 对 Crunchydata 使用记录的池化步骤
执行的步骤(成功):
pgo create pgbouncer mycluster添加 PgBouncer- 基本连接测试OK
psql -h hostname pgbouncer -U pgbouncer
问题:假设没有 PgBouncerfoo_db_1的情况下拥有foouser数据库,我可以成功连接数据库,但同样通过 PgBouncer 失败。
下面是我的数据库创建和许可的片段(这样只有这个用户才能访问这个数据库)
-- `foouser` is a non-super user
CREATE database foo_db_1 WITH OWNER=foouser ENCODING = 'UTF8' TABLESPACE = pg_default;
REVOKE connect ON DATABASE foo_db_1 FROM PUBLIC;
GRANT ALL PRIVILEGES ON DATABASE foo_db_1 to foouser;
现在,当我使用同一个用户(所有者)并尝试从 PgBouncer 访问它时,它会失败并显示错误消息
psql -h hostname-pgbouncer foo_db_1 -U foouser
psql: error: ERROR: pgbouncer cannot connect to server
command terminated with exit code 2
注意:当我使用以下命令(示例)删除基于用户的权限时,PgBouncer 可以正常连接。
GRANT ALL PRIVILEGES ON DATABASE foo_db_1 to PUBLIC;
是否有任何其他用户需要我授予允许 pgbouncer 访问的权限?