Createuser:无法连接到数据库postgres:FATAL:angular色“tom”不存在

我想第一次设置Postgres,我需要创build一个有权限读取和创build数据库的用户。 但是,当我在我的terminal中使用“createuser username”时,我收到以下消息:

createuser:无法连接到数据库postgres:FATAL:angular色“tom”不存在

Tom是我现在login的Ubuntu用户帐户。 我试图创build一个“postgres”的用户名,然后做一个“psql -U psql template1”,所以我可以创build一个数据库,并为我的Rails应用程序分配一个所有者。

任何帮助?

你提到过Ubuntu,所以我猜你会通过apt安装Ubuntu的PostgreSQL包。

如果是这样, postgres PostgreSQL用户帐户已经存在,并configuration为可通过pg_hba.conf unix套接字的peer身份validation访问。 通过以postgres unix用户身份运行命令来实现它,例如:

 sudo -u postgres createuser owning_user sudo -u postgres createdb -O owning_user dbname 

这些都是Ubuntu PostgreSQL文档中的第一个Google命中“Ubuntu PostgreSQL”的文档,覆盖了大量的Stack Overflow问题。

(通过省略操作系统和版本,安装PostgreSQL的方式等等,你已经使这个问题难以回答。

 sudo -u postgres createuser -s tom 

这应该可以帮助你,因为如果pipe理员还没有为你创build一个PostgreSQL用户帐户,就会发生这种情况。 也可能是因为您分配的PostgreSQL用户名与您的操作系统用户名不同,那么您需要使用-U开关。

请参阅这里的说明git gist

运行这个:

 sudo -u postgres psql 

在你的terminal进入postgres

 postgres=# 

 CREATE USER new_username; 

注意:用你想创build的用户replacenew_username,你的情况是tom。

 postgres=# CREATE USER new_username; CREATE ROLE 

由于您希望该用户能够创build数据库,因此您需要将angular色更改为超级用户

 postgres=# ALTER USER new_username SUPERUSER CREATEDB; ALTER ROLE 

确认一切都成功了,

 postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- new_username | Superuser, Create DB | {} postgres | Superuser, Create role, Create DB, Replication | {} root | Superuser, Create role, Create DB | {} postgres=# 

您的错误发布在官方文档中。 你可以阅读这篇文章 。

我从这篇文章中复制了你的原因(并链接了URL):

如果pipe理员尚未为您创buildPostgreSQL用户帐户,则会发生这种情况。 (PostgreSQL用户帐户不同于操作系统用户帐户。)如果您是pipe理员,请参阅第20章帮助创build帐户。 您将需要成为安装PostgreSQL的操作系统用户(通常是postgres)来创build第一个用户帐户。 也可能是您被分配了与您的操作系统用户名不同的PostgreSQL用户名; 在这种情况下,您需要使用-U开关或设置PGUSER环境variables来指定您的PostgreSQL用户名

为了您的目的,您可以:

1)创build一个PostgreSQL用户帐户:

 sudo -u postgres createuser tom -d -P 

-P选项设置密码; -d选项允许为你的用户名'tom'创build数据库。注意'tom'是你的操作系统用户名。这样,你可以不用sudo就可以执行PostgreSQL命令。 )

2)现在你应该可以执行createdb和其他PostgreSQL命令。

1-作为默认PostgreSQL用户login(postgres)

 sudo -u postgres -i 

2-作为postgres用户。 使用createuser命令添加一个新的数据库用户

 [postgres]$ createuser --interactive 

3出境

 [postgres]$ exit 

你需要先运行initdb。 它将创build数据库集群和初始设置

请参阅如何首次configurationpostgresql? 和http://www.postgresql.org/docs/8.4/static/app-initdb.html