PostgreSQL 用户授权/配置问题

PostgreSQL 用户授权/配置问题

我已经安装了 postgresql 9.3,但无法获得任何用户授权。我也无法使用 initdb 或 pg_ctl。我也找不到 pg_hba.conf。

答案1

文件所在位置pg_hba.conf

pg_hba.conf/etc/postgresql/X.Y/main/X.Y你的版本在哪里,你的是 9.3,我的是 9.4)。


“缺失”程序:

pg_ctl默认情况下可能不会安装。initdb默认情况下也可能不会安装。两者都可以通过 进行安装postgres-xc


添加用户以便他们能够被授权:

您必须通过psql命令行客户端添加用户/角色。然后您必须将用户添加到pg_hba.conf

我建议使用pgadmin3图形界面/程序来处理用户角色并添加它们。它允许您专门选择要全局授予用户的各个权限(通常不应有特殊权限,只需创建用户并单独授予给定数据库的权限)。


配置pg_hba.conf

这可能有点棘手。一旦你有了用户登录角色,你需要将它们添加到pg_hba.conf。文件的格式是PosgreSQL 文档中有详细的解释。这里是简短的总结。

除非这里有匹配的行,否则默认访问规则是“拒绝访问”。

这是一行的格式pg_hba.conf

TYPE DATABASE USER ADDRESS METHOD

type是连接的类型。来自同一台计算机的本地连接获得该local类型。来自非本地 IP(即通过 TCP)的连接获得该host类型。 hostnossl可以改用,并将识别任何未通过 SSL 的网络连接(即非本地)。 hostssl可用于指定任何通过 SSL 的网络连接,但默认不设置 SSL。

database不言自明 - 您要将这些访问权限/限制设置为哪个数据库。一种特殊的数据库类型是 ,all表示所有数据库。

user是您添加到 Postgres 的用户名/角色。它必须存在于 postgres 中,并且可能需要作为本地系统用户存在(但这在我解释的地方有解释METHOD)。

ADDRESS是 IPv4 或 IPv6 地址或范围。仅当下指定hosthostnossl或 时才可使用。它可以是 CIDR 范围或单个 IP 地址。hostssltype

METHOD是如何处理身份验证。

  • 对于具有该类型的本地用户local,它应该是peer身份验证,或者md5如果您希望用户能够从不同的本地计算机用户帐户使用密码登录,则应该是身份验证。
  • 对于hosthostsslhostnossl连接类型,您可能希望md5在这里使用,但是您可能有其他类型的身份验证(请参阅上面的文档链接)。
  • 除非您疯了或者真的知道自己在做什么,否则在任何情况下都不应使用该trust方法。 这有对人员进行身份验证,这是一个来自地狱的安全漏洞,即使对于local类型连接也是如此。

我建议你仔细阅读该文件上的链接文档pg_hba.conf,它可以更好地解释事情。

相关内容