1

我正在尝试设置我的本地 postgresql,因此它没有密码。我知道这必须在pg_hba.conf文件中完成,并且要访问该文件,我必须是postgres用户。但要成为postgres用户,我必须登录su postgres并输入我没有的密码。

对此有什么解决方案(我在 OSX 上)?

4

1 回答 1

6

您混淆了有关安全模型的几个不同概念。

有一个postgres操作系统用户,PostgreSQL 服务器运行该用户是为了隔离其数据文件并限制在安全漏洞或应用程序错误的情况下造成的损害。为了安全起见,PostgreSQL 不会运行root。此用户通常没有密码,但您可以通过 root 帐户使用sudo- 您可以sudo使用类似sudo -i -u postgres.

还有一个postgres 数据库 用户,默认的数据库超级用户。默认情况下,此用户通常没有密码,但pg_hba.conf允许postgres操作系统postgres用户使用身份验证以 PostgreSQL 用户身份进行连接peer

如果您愿意,您可以更改配置,以便使用postgres数据库用户的密码,这样您就可以psql -U postgres从任何系统用户帐户:

  • ALTER USER postgres WITH ENCRYPTED PASSWORD 'blahblah';
  • 编辑pg_hba.conf(“hba”是“基于主机的身份验证”)以使用md5身份验证localhost连接。
  • 重新启动或重新加载 PostgreSQL

同样,如果您想允许任何系统用户以任何数据库用户身份连接而无需密码,您必须修改pg_hba.conf并设置trust为身份验证模式localhost连接类型。请仅使用trust身份验证进行测试。

要了解更多信息,请参阅PostgreSQL 文档中的客户端身份验证章节

于 2013-07-09T02:10:33.833 回答