获取基于主机的身份验证中允许的主机列表

时间:2013-11-14 09:22:15

标签: postgresql postgresql-9.1

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

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

类似于我如何使用show max_connections;获取 max_connections 设置,我假设它会像show hosts;select pg_hosts();既不存在)。

这可能吗?

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

1 个答案:

答案 0 :(得分:1)

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

执行此操作的最佳方法(如果您确实必须)是创建一个PL / PerlU函数,该函数读取pg_hba.conf并对其进行解析,并以您希望的方式返回信息。您甚至可以使用这些函数为pg_hba.conf构建一个管理系统(重新加载数据库可能会很有趣,但您可以使用LISTEN / NOTIFY方法执行此操作)。

但是,请注意,如果执行此操作,则您的功能具有安全性。您可能希望仅撤消从公共运行函数的权限,授予对nobody的访问权限,从而要求用户成为超级用户才能运行这些功能。除非有令人信服的理由,否则我个人会避免将这些关键信息暴露给数据库,但我可以想象可能存在可能有助于平衡的情况。然而,它肯定是危险的领域。