Postgres用户不存在?

时间:2014-01-14 19:47:41

标签: macos postgresql

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

我坚持无法更改为postgres-user

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

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

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

8 个答案:

答案 0 :(得分:73)

psql:使用我的默认用户名

登录

psql -U postgres:以postgres用户身份登录

似乎并不需要Sudo。

我将Postgres.app用于我的OS X postgres数据库。它消除了确保安装正常并且数据库服务器正确启动的麻烦。请在此处查看:http://postgresapp.com

编辑:感谢@Erwin Brandstetter纠正我对参数的使用。

答案 1 :(得分:17)

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

答案 2 :(得分:15)

psql --help,如果您没有为数据库名称设置选项(没有-d选项),那么它就是您的用户名,如果您没有-U ,数据库用户名也是你的用户名等。

但是通过initdb(创建第一个数据库)命令,它不会将您的用户名作为任何数据库名称。它有一个名为postgres的数据库。 The first database is always created by the initdb command when the data storage area is initialized. This database is called postgres.

因此,如果您没有另一个名为您的用户名的数据库,则需要执行psql -d postgres才能使用psql命令。它似乎默认提供-d选项,psql postgres也有效。

如果您创建了另一个与您的用户名相同的数据库名称(应该使用createdb完成),那么您可以仅命令psql。并且似乎第一个数据库用户名通过brew设置为您的计算机用户名。

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

,或者

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

默认会有效。

答案 3 :(得分:3)

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

psql: FATAL: database "<user>" does not exist

答案 4 :(得分:3)

psql -U postgres

在db名称的情况下工作得很好:postgres&amp;用户名:postgres。所以你不需要写sudo。

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

psql -U yourdb postgres

正如Postgres的帮助所示:

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

答案 5 :(得分:2)

我与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/postgres正在执行chown: invalid user: ‘postgres:staff’

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

获得正确的设置和输出

postgres安装后有一些特定的命令可以将新用户添加到数据库系统。 在initdb之后,按照here

所述运行以下命令
createuser --pwprompt postgres
createdb -Opostgres -Eutf8 masi_development
psql -U postgres -W masi_development

要始终避免密码请求,您有三个选项,如here所述。

答案 6 :(得分:2)

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

brew install postgres

启动PostgreSQL服务器

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

初始化数据库

initdb /usr/local/var/postgres

如果此命令引发错误,则rm旧数据库文件并重新运行上述命令

rm -r /usr/local/var/postgres

创建一个新数据库

createdb postgres_test
psql -W postegres_test

您将登录到该数据库,并可以在此处创建用户进行登录

答案 7 :(得分:1)

解决方案很简单:
以root身份登录 之后:

su - postgres

psql