dblink_connect_u — 以不安全的方式打开到远程数据库的持久连接
dblink_connect_u(text connstr) returns text dblink_connect_u(text connname, text connstr) returns text
dblink_connect_u() 与 dblink_connect() 完全相同,但它允许非超级用户使用任何身份验证方法进行连接。
如果远程服务器选择一种不涉及密码的身份验证方法,则可能发生冒充和后续的权限提升,因为会话似乎源自本地 PostgreSQL 服务器运行的用户。此外,即使远程服务器确实要求密码,也有可能从服务器环境(例如属于服务器用户的 ~/.pgpass 文件)提供密码。这不仅带来了冒充的风险,而且还可能将密码暴露给不值得信赖的远程服务器。因此,dblink_connect_u() 最初安装时会撤销对 PUBLIC 的所有权限,使其除了超级用户外无法调用。在某些情况下,将 dblink_connect_u() 的 EXECUTE 权限授予被认为值得信赖的特定用户可能是合适的,但应谨慎行事。还建议服务器用户拥有的任何 ~/.pgpass 文件 不要 包含任何指定通配符主机名的记录。
有关更多详细信息,请参阅 dblink_connect()。