2

我正在使用 OS X El Capitan 版本 10.11.3 我下载了 Postgres 应用程序并运行了该应用程序。

顶部的大象图标显示版本 9.6.1.0(9.6.1.0)

当我单击“打开 psql”时,我的终端上会出现以下输出。

$ '/Applications/Postgres.app/Contents/Versions/9.6/bin'/psql -p5432
psql: FATAL:  role <username> does not exist

我的用户名在哪里。据我了解,该应用程序应该使用我的用户名和无密码创建一个角色。

我试着做:

psql -h localhost -U <username>

这给出了同样的错误。

以下是我在尝试 SO 上发布的答案时得到的各种输出。

$ which psql
/Applications/Postgres.app/Contents/Versions/latest/bin/psql

在搜索了更多之后,我运行了以下命令:

psql -h localhost -U postgres
postgres=# 

postgres 外壳打开了。谁能解释发生了什么?

4

1 回答 1

1

在没有任何给定用户名 ( -U ...) 的情况下启动 psql 会尝试使用与当前 OS 用户同名的 db 用户登录。显然,尚未创建 DB 用户。

使用每个数据库集群创建的默认超级用户名为postgres. 不要将此与 RDBMS 的名称或命名为postgres其他用途的系统 DB 混淆。

您可以使用用户登录postgres并且没有 PW 的事实表明了两件事:

  1. 用户 `postgres 存在(duh)。
  2. 它设置为无密码访问,使用.pgpass文件或pg_hba.conf使用其中一种身份验证方法peeridenttrust. peer最有可能的。

如果是这样,从外壳快速修复:

createuser -h localhost -U postgres vimarshchaturvedi

vimarshchaturvedi显然是您的操作系统用户名。

登录后,您可以检查哪些登录角色(= 用户)退出:

SELECT rolname FROM pg_roles;
于 2016-11-18T05:33:42.323 回答