无法连接到数据库 postgres: FATAL: 角色 "_postgres" 不存在

努力 OS X 10.10, 安装了 postgreSQL 和 PostGIS
http://www.kyngchaos.com/software/postgres
, psql vers 9.3.5. 我很难强迫 postgreSQL 工作。

我将数据包安装为计算机上的管理员。 我的用户名
christoph


登录的唯一方法是通过:


$ psql -U postgres


我想创建一个名为的用户
christoph

, 如何在计算机上的管理员名称。
我试过了 /的 terminal, 不是 " 包括在 psql"/:


$ sudo -u postgres createuser christoph
> sudo: unknown user: postgres


然后我读了一点和尝试过 /的 terminal, 不是 " 授权B. psql"/:


$ sudo -u _postgres createuser christoph
> Password: ****
> Could not connect to database postgres: FATAL: role "_postgres" does not exist


为什么不起作用?
已邀请:

君笑尘

赞同来自:

在最新版本中 OS X 使用某些安装方法,系统用户是通过添加的 '_' 到 'postgres', 因此,您的系统中系统用户的名称
postgres_

或者

_postgres


, 但不是 'postgres'. 我不用 OS X, 因此,我不知道是什么让他们这样做。 看起来他们想要遵守命名系统账户的方案。
不要混淆 Postgres DB /入口的作用/ 姓名
postgres

. 这种差异导致各种混乱。 至少人们开始意识到某些句法元素的不同含义 ...

这就是你可以进入的原因 Postgres 穿过:


$ psql -U postgres



postgres

- 这是一个角色 DB 这里,不是用户 OS.

但它不起作用:


$ sudo -u postgres


因为没有用户 OS 用这个名字。 相反:


$ sudo -u _postgres


但是之后

http://www.postgresql.org/docs ... -PEER
仍然不起作用,因为没有 DB 用户具有相同的名称
_postgres

. 相关答案:

https://coderoad.ru/21122598/
默认情况下,在标准设置中激活的身份验证方法是当本地系统上的系统用户无法访问与数据库角色的数据库角色时的对等基于对的身份验证。 这解释了最后一个错误消息:


Could not connect to database postgres: FATAL: role "_postgres" does not exist


您的系统试图进入 DB 与当前用户的名称相同 OS, 使用点对点身份验证,由于不合规而失败。

您的上一支球队应该这样工作:


$ sudo -u _postgres createuser <b>-U postgres</b> christoph


添加
-U postgres

- 此选项
http://www.postgresql.org/docs ... .html
, 表明作用 DB 登录。

您还必须输入密码。 我会考虑使用进入的可能性
http://www.postgresql.org/docs ... .html
对于没有密码的访问,而系统用户与可能的相关角色不同 DB.

连接的:

https://coderoad.ru/13004297/
https://coderoad.ru/15359348/

要回复问题请先登录注册