Postgres dblink 问题,SQL 状态:2F003 - 需要密码

问题描述 投票:0回答:1

我想实现的目标: 使用数据库 a 的只读用户访问 postgres 数据库。 这个问题就解决了。用户帐户正在运行 - 我可以读取数据库 a 中的所有表和视图。 除了;有一些视图通过 dblink 从其他数据库(在同一服务器上)提取一些信息。 使用默认用户时这没有问题 - 使用只读用户时这是一个问题...... 当使用只读用户登录另一个数据库时 - 我拥有完全访问权限,可以读取和查看任何表和视图。所以我认为只读帐户本身没有问题。

做了一些阅读/研究,我了解到在这种情况下 - 需要 dblink 才能使用完整的凭据。

所以我尝试的是这个...

SELECT company_projects.databasename,
    company_projects.project_id,
    company_projects.code,
    company_projects.description,
    company_projects.customer
   FROM dblink('hostaddr=192.123.45.67 port=5432 user=readonly_user password=ThePassword dbname=company_global', 'select databasename, project_id, code, description, customer from company_projects'::text) company_projects(databasename text, project_id integer, code text, description text, customer text);

结果将是:

'ViewCommand' object has no attribute 'auto_commit'ERROR:  Non-superusers must provide a password in the connection string.password is required 

FEHLER:  password is required
SQL state: 2F003
Detail: Non-superusers must provide a password in the connection string.

版本信息: “x86_64-pc-linux-gnu 上的 PostgreSQL 11.12 (Debian 11.12-0+deb10u1),由 gcc (Debian 8.3.0-6) 8.3.0 编译,64 位”

欢迎任何提示。 如果这可行的话,我会考虑将凭据存储在 .pgpass 文件中,这听起来比将这些凭据存储在 sql 字符串中更好......

KR,马丁

postgresql dblink
1个回答
0
投票

问题是运行在 192.123.45.67、端口 5432 的服务器允许

readonly_user
在没有密码的情况下从您的计算机进行连接。是否提供密码并不重要,重要的是远程服务器不需要密码。

您必须重新配置远程服务器,以便该连接需要密码。

© www.soinside.com 2019 - 2024. All rights reserved.