Postgres用户不存在?

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

我被困在无法更改为postgres用户

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

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

这些尝试是作为普通用户进行的。 尝试他们作为根有完全相同的结果。 我已经在OS X上通过Homebrew安装了postgres,而且我已经阅读了多次的说明。

psql :以我的默认用户名login

psql -U postgres :以postgres用户身份login

Sudo似乎并不需要我。

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

编辑:信贷@Erwin Brandstetter纠正我的论点使用。

OS X倾向于使用“_”作为系统帐户名称的前缀; 你不会说你正在使用什么版本的OS X,但是至less在10.8和10.9中,_postgres用户存在于默认安装中。 请注意,由于它没有密码,因此您将无法获取此帐户(除root以外)。 另一方面, sudo -u _postgres应该可以正常工作。

通过psql --help ,当你没有设置数据库名称的选项(没有-d选项),这将是你的用户名,如果你不这样做-U ,数据库的用户名也将是你的用户名,等等。

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

所以如果你没有另一个数据库命名你的用户名,你需要执行psql -d postgres for psql命令才能工作。 它似乎默认提供-d选项, psql postgres也可以。

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

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

要么,

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

将默认工作。

这里的讨论和回答对我来说是巨大的帮助:

psql:致命:数据库“<user>”不存在

 psql -U postgres 

在db名字的情况下工作得很好:postgres&username:postgres。 所以你不需要写sudo。

而在其他数据库的情况下,你可以尝试

 psql -U yourdb postgres 

正如在Postgres帮助中给出的那样:

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

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

错误设置时输出

但是从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/postgreschown: invalid user: 'postgres:staff'

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

获得正确的设置和输出

postgres安装后有特定的命令来添加一个新的用户到数据库系统。 在initdb之后,按照此处所述运行以下内容

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

为了避免密码请求,您有三种select,如下所述。

解决scheme很简单:
以root身份login
之后:

 su - postgres psql