mac 上用户“postgres”的密码验证失败

ycs*_*hao 8 postgresql macos psql

我在创建新的 psql 用户时遇到问题,因为我无法以“postgres”的身份登录 psql,我试过了

1. sudo -u postgres psql

2. sudo -u postgres createuser img_site -P -s -e
Run Code Online (Sandbox Code Playgroud)

他们都要求输入我不知道的“postgres”密码。我试图更改用户“postgres”的 unix 密码(我知道这很危险),但它仍然告诉我:用户“postgres”的密码身份验证失败。我也试过 GUI pgAdmin 但它是同样的错误。

我不知道是否相关:我创建了一个符号链接

sudo ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/
Run Code Online (Sandbox Code Playgroud)

为了摆脱错误

createuser: could not connect to database postgres: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)

zaa*_*deh 3

查看pg_hba.conf。它应该在顶部有一行这样的内容(在所有其他条目之前):

local   all             postgres                                peer
Run Code Online (Sandbox Code Playgroud)

这允许 db 用户通过本地 Unix 域套接字访问postgres所有数据库,无需密码。

现在清除并重新定义系统用户的密码postgres(在 PostgreSQL 安装期间自动创建):

sudo passwd -d postrges
sudo su postgres -c passed
Run Code Online (Sandbox Code Playgroud)

这个用户帐户的特别之处在于 postgres 服务器允许它连接到数据库,不询问任何问题。

现在,要为postgresdb 用户定义一个显式密码,您可以使用该密码通过本地 Unix 域套接字连接以外的其他方式登录,请运行:

su postgres -c psql template1
psql> ALTER USER postgres WITH PASSWORD '<password>';
Run Code Online (Sandbox Code Playgroud)

postgres在运行此命令之前,系统将要求您输入系统用户帐户密码。成功完成后,键入\q退出psqlshell,您就完成了postgresdb 用户密码的重置。