1

我知道我必须在pg_hba.conf文件中添加远程主机的 IP 地址并重新启动 PostgreSQL 服务器以使更改生效。

但我想直接从已经运行的服务器获取当前允许进行基于主机的身份验证的主机列表。

与我如何使用 获取max_connections设置类似show max_connections;,我假设它类似于show hosts;select pg_hosts();两者都不存在)。

这可能吗?

编辑:我知道暴露主机会带来安全风险。但是psql直接在数据库服务器的终端中调用的实用程序呢?它有一个特殊的命令来获取列表吗?

4

1 回答 1

1

终端的 psql 命令没有获取列表的权限。只有 PostgreSQL 数据库可以。

最好的方法(如果你真的必须)是创建一个 PL/PerlU 函数,它读取 pg_hba.conf 并解析它,并以你想要的方式返回信息。您甚至可以使用这些功能为 pg_hba.conf 构建一个管理系统(重新加载数据库可能会很有趣,但您可以使用 LISTEN/NOTIFY 方法来做到这一点)。

但是请注意,如果您这样做,您的函数将具有安全性。您可能只想撤销从公共运行功能的权限,授予任何人访问权限,因此要求用户是超级用户才能运行这些功能。除非有令人信服的理由,否则我个人会避免将此类关键信息暴露给数据库,但我可以想象在某些情况下它可能会有所帮助。然而,这当然是危险的领域。

于 2013-12-09T03:09:00.973 回答