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 - postgres
和sudo -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/postgres
给chown: 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