我正在尝试设置我的本地postgresql,因此它没有密码。我知道这必须在pg_hba.conf
文件中完成,并且要加入该文件,我必须是postgres
用户。但要成为postgres
用户,我必须使用su postgres
登录并输入我没有的密码。
任何解决方案(我在OSX上)?
答案 0 :(得分:4)
您对安全模型的几个不同概念感到困惑。
有一个postgres
操作系统用户,PostgreSQL服务器运行该用户是为了隔离其数据文件并在发生安全漏洞或应用程序错误时限制损坏。出于安全考虑,PostgreSQL不会以root
运行。此用户通常没有密码,但您可以使用sudo
通过root帐户更改密码 - 您可sudo
向此用户sudo -i -u postgres
添加密码。
还有一个postgres
数据库用户,默认数据库超级用户。默认情况下,此用户通常没有密码,但pg_hba.conf
允许postgres
操作系统用户使用postgres
身份验证作为peer
PostgreSQL用户进行连接。
如果需要,可以更改配置,以便为postgres
数据库用户使用密码,这样您就可以从任何系统用户帐户psql -U postgres
:
ALTER USER postgres WITH ENCRYPTED PASSWORD 'blahblah';
pg_hba.conf
(“hba”是“基于主机的身份验证”),以便对md5
和local
个连接使用host
身份验证。同样,如果您希望允许任何系统用户以没有密码的任何数据库用户身份进行连接,则必须修改pg_hba.conf
并将trust
设置为local
和{host
的身份验证模式{1}}连接类型。请仅使用trust
身份验证进行测试。
要了解详情,请参阅the client authentication chapter in the PostgreSQL documentation。