Postgres 用户不存在?

我刚刚安装了 Postgres,并已经修补它和各种配置1-2小时。

我被 无法更改为 postgres-user卡住了

$ su - postgres产生以下错误: su: unknown login: postgres

$ sudo -u postgres psql产生以下错误: sudo: unknown user: postgres

这些尝试是作为普通用户进行的。将它们作为 root 用户进行尝试会得到完全相同的结果。我已经安装了 Postgres 通过家酿在 OS X 上,我已经阅读了多次说明。

143111 次浏览

psql: 用我的默认用户名登录我

psql -U postgres: 作为 postgres 用户登录我

我好像不需要 Sudo。

我使用 Postgre.app 作为我的 OS X postgres 数据库。它消除了确保安装正常运行和数据库服务器正常启动的麻烦。看这里: http://postgresapp.com

编辑: 感谢@Erwin Brandstetter 纠正了我对论点的使用。

OS X 倾向于在系统帐户名称前面加上“ _”; 您不会说明您使用的是哪个版本的 OS X,但至少在10.8和10.9中,_ postgres 用户在默认安装中存在。请注意,您不能对这个帐户使用 su(除非作为 root 用户) ,因为它没有密码。另一方面,sudo -u _postgres应该可以正常工作。

这里的讨论和回答对我很有帮助:

FATAL: 数据库“ < user >”不存在

psql -U postgres

在 db name: postgres & username: postgres 的情况下,对我来说工作得很好。所以您不需要编写 sudo。

And in the case other db, you may try

psql -U yourdb postgres

正如在 Postgres 得到的帮助:

psql [OPTION]... [DBNAME [USERNAME]]

我得到完全相同的错误与 kryshah 与 su - postgressudo -u postgres psql。 DanielM 的回答也出现了错误。

Outputs when wrong settings

然而回答 przbabu 的评论。

masi$ psql
psql: FATAL:  database "masi" does not exist
masi$ psql -U postgres
psql: FATAL:  role "postgres" does not exist
masi$ psql postgres
psql (9.4.1)
Type "help" for help.

我认为这个问题的一部分可能是在 OSX 的所有者设置

masi$ ls -al /Users/
total 0
drwxr-xr-x   7 root      admin  238 Jul  3 09:50 .
drwxr-xr-x  37 root      wheel 1326 Jul  2 19:02 ..
-rw-r--r--   1 root      wheel    0 Sep 10  2014 .localized
drwxrwxrwt   7 root      wheel  238 Apr  9 19:49 Shared
drwxr-xr-x   2 root      admin   68 Jul  3 09:50 postgres
drwxr-xr-x+ 71 masi      staff 2414 Jul  3 09:50 masi

但是做 sudo chown -R postgres:staff /Users/postgres会得到 chown: invalid user: ‘postgres:staff’

总之,这不是解决问题的办法。 使用 postgres 安装提供的工具创建用户和数据库。

获取正确的设置和输出

在 postgres 安装之后,有一些特定的命令用于向数据库系统添加新用户。 在 initdb 之后,按照 < a href = “ http://www.tunnelSup.com/setup-up-postgres-on-mac-osx”rel = “ nofollow noReferrer”> 在这里运行以下代码

createuser --pwprompt postgres
createdb -Opostgres -Eutf8 masi_development
psql -U postgres -W masi_development

To avoid the password request all the time, you have three choices as described 给你.

到了 psql --help,当你没有设置数据库名称的选项(没有 -d选项) ,它将是你的用户名,如果你没有做 -U,数据库用户名将是你的用户名,等等。

但是通过 initdb(创建第一个数据库)命令,它没有您的用户名作为任何数据库名称。它有一个名为 postgres的数据库。在初始化数据存储区域时,总是由 initdb 命令创建第一个数据库。这个数据库叫做 postgres。

因此,如果没有另一个名为用户名的数据库,则需要为 psql 命令执行 psql -d postgres操作。它似乎给 -d默认选项,psql postgres也工作。

如果您已经创建了与您的用户名相同的另一个数据库名称(应该使用 createdb) ,那么您可以只命令 psql。似乎第一个数据库用户名设置为您的机器用户名。

psql -d <first database name> -U <first database user name>

或者,

psql -d postgres -U <your machine username>
psql -d postgres

默认情况下是可行的。

The solution is simple:
作为 root 用户登录
以及之后:

su - postgres


psql

对我来说,这就是 MacOS 的解决方案 重新安装 psql

brew install postgres

启动 PostgreSQL 服务器

pg_ctl -D /usr/local/var/postgres start

Initialize DB

initdb /usr/local/var/postgres

如果这个命令抛出一个错误 rm 旧的数据库文件并重新运行上面的命令

rm -r /usr/local/var/postgres

创建一个新数据库

createdb postgres_test
psql -W postegres_test

您将登录到这个数据库,并且可以在这里创建一个用户来登录

您可以尝试创建一个新角色,您可以命名:

sudo adduser <new_user_role>