我正在尝试设置我的本地 postgresql,因此它没有密码。我知道这必须在pg_hba.conf
文件中完成,并且要访问该文件,我必须是postgres
用户。但要成为postgres
用户,我必须登录su postgres
并输入我没有的密码。
对此有什么解决方案(我在 OSX 上)?
我正在尝试设置我的本地 postgresql,因此它没有密码。我知道这必须在pg_hba.conf
文件中完成,并且要访问该文件,我必须是postgres
用户。但要成为postgres
用户,我必须登录su postgres
并输入我没有的密码。
对此有什么解决方案(我在 OSX 上)?
您混淆了有关安全模型的几个不同概念。
有一个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
身份验证local
和host
连接。同样,如果您想允许任何系统用户以任何数据库用户身份连接而无需密码,您必须修改pg_hba.conf
并设置trust
为身份验证模式local
和host
连接类型。请仅使用trust
身份验证进行测试。
要了解更多信息,请参阅PostgreSQL 文档中的客户端身份验证章节。