Postgres用户不存在?


91

我刚刚安装了Postgres,并且一直在1-2小时内修改它和各种配置。

我坚持无法更改为postgres用户

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

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

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


您只是在尝试运行psql吗?
danielM 2014年

好吧,我想以适当的postgres用户身份运行。
krystah 2014年

在某些Mac OS X风格上,通过某些安装方法,我认为是按照创建用户的方式进行的postgres_。注意尾随下划线。另外,您确定您(或安装程序)确实创建了PostgreSQL实例并启动了数据库吗?
克雷格·林格2014年

1
我太不能切换到postgres用户了。解决了安装postgresql-server软件包后的问题。
sergio郝海东冠状病六四事件法轮功

Answers:


90

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

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

我似乎不需要Sudo。

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

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


8
我使用Brew进行安装,但它没有创建名为postgres或_postgres的用户(据我所知),所以这对我来说失败了。@kangkyu解决方案说明并逐步解决了这些问题-假设您当时没有postgres用户:psql postgrespsql -d postgres
notapatch 2015年

21

通过psql --help,当您未设置数据库名称的-d选项(不带选项)时,它将是您的用户名;如果未设置-U,则数据库用户名也将是您的用户名,依此类推。

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

因此,如果您没有另一个名为用户名的数据库,则需要执行psql -d postgrespsql命令。而且似乎它-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

将默认工作。


18

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


谢谢!这是我一直在寻找的答案。我可以将用户重命名为“ postgres”吗?以_postgres用户身份登录导致psql抱怨“ _postgres”用户不存在。我正在尝试使用另一个数据库中的备份文件还原干净的postgres实例
克里斯·雷耶斯-he-him

1
@ChrisReyes更改系统帐户的名称可能会破坏使用它们的系统组件,因此强烈建议您使用它。您可以使用名称“ postgres”创建另一个用户帐户并使用它,但是如果我理解正确(我可能不理解),那么您遇到的问题是postgres数据库中的用户帐户未命名为_postgres。AIUI数据库中的帐户名称与系统帐户名称是分开的,因此在“ _postgres”系统帐户下运行数据库实例,并使用“ postgres”数据库帐户打开该数据库应该没有问题。
戈登·戴维森


4
psql -U postgres

对于数据库名称:postgres和用户名:postgres,对我来说工作正常。因此,您无需编写sudo。

如果是其他数据库,则可以尝试

psql -U yourdb postgres

如Postgres帮助中所述:

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

我的情况:$ psql -U postgres生成输出psql: FATAL: role "postgres" does not exist,但是psql postgres有效。
冰冻的火焰

4

我得到完全相同的错误与kryshahsu - postgressudo -u postgres psql。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安装提供的工具来创建用户和数据库。

获得正确的设置和输出

postgres安装后,有一些特定的命令可将新用户添加到数据库系统。在initdb之后,如上所述运行以下这里

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

为了始终避免输入密码,您可以按照此处所述选择三个选项。


1

对我来说,这是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

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


0

解决方案很简单:
以root身份登录,
然后再登录:

su - postgres

psql
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.