Rails和PostgreSQL:angular色postgres不存在

我在我的Mac OS Lion上安装了PostgreSQL,并且正在使用Rails应用程序。 我使用RVM保持与其他Rails应用程序分离的一切。

由于某些原因,当我第一次尝试迁移数据库时,rake找不到postgres用户。 我得到错误

FATAL: role "postgres" does not exist 

我有pgAdmin,所以我可以清楚地看到在DB中有一个postgres用户 – 事实上的pipe理员帐户 – 所以我不知道该怎么办。

我读了一些关于PostgreSQL有问题的人,因为它安装了哪个path,但是如果找不到数据库的话我不会想那么多。

当数据库用户不存在时,popup此消息。 比较手册在这里 。
多个本地数据库 不能解释。 angular色在群集范围内有效。 手册再次 :

请注意,angular色是在数据库群集级别定义的,因此在群集中的所有数据库中都是有效的。

您必须在另一个数据库集群中结束。 这将是在同一台机器上运行的另一台服务器,正在侦听不同的端口。 或者更有可能在不同的机器上。

事实上,从远程服务器来的消息是不是可能呢?

其实,由于某些未知的原因,我发现这个问题实际上是因为postgresqlangular色没有被创build。

尝试运行:

 createuser -s -r postgres 

请注意,angular色是PostgreSQL 维护数据库权限的方式 。 如果没有postgres用户的angular色,那么它不能访问任何东西。 createuser命令是CREATE USER,CREATE ROLE等命令的简单包装 。

最近我安装postgres后立即得到这个问题。 如果安装后立即出现,则可能缺less默认用户postgres。 在这种情况下,您可以使用下面的命令创build默认用户postgres。

createuser -s -U $ USER

 Ex: createuser -s -U $USER enter your required role name: postgres enter password for your the user: 

它会提示您input所需的数据库angular色名称和密码一旦完成该过程,您可以使用以下命令login到postgres控制台

 psql -U 'your_database_name' 

例如:psql -U postgres
在这里,您需要在创build用户时input密码。

希望能帮助到你 :)

我在OSX 10.8上,而且我尝试的所有东西都会给我带来FATAL: role "USER" does not exist 。 就像许多人在这里所说的那样,运行createuser -s USER ,但是那给了我同样的错误。 这终于为我工作:

 $ sudo su # su postgres # createuser -s --username=postgres MYUSERNAME 

createuser -s --username=postgres通过连接为postgres(–username = postgres标志)创build超级用户(-s标志)。

我看到你的问题已经被回答了,但是我想为使用OSX的人们添加这个答案,试图安装PostgreSQL 9.2.4。

当我第一次安装Heroku的POSTGRES.app的时候,我遇到了这个问题。 经过一天早上的试验和错误,我认为这一行代码解决了问题。 如前所述,这是因为postgresql在第一次设置时没有默认的angular色。 我们需要设置。

 sovanlandy=# CREATE ROLE postgres LOGIN; 

您必须login到您的psql控制台才能使用此psql命令。

还要注意的是,如果您已经创build了'postgre'这个angular色,但是仍然有权限错误,那么您需要使用以下命令进行修改:

 sovanlandy=# ALTER ROLE postgres LOGIN; 

希望能帮助到你!

在Heroku文档中; 他们说:

你还需要删除你的database.yml中的username字段,如果有的话:在文件config / database.yml中删除:username:myapp

那么你只要在“development:”中删除那行,如果你不告诉数据库在angular色“myapp”下工作,

这一行告诉rails数据库myapp_development应该在myapp的angular色下运行。 由于您可能在数据库中没有这个angular色,我们将删除它。 用行删除Rails将尝试以当前login到计算机的用户身份访问数据库。

还要记住创build用于开发的数据库:

 $createdb myapp_development 

为您的应用名称重新填入“myapp”

你可以有多个本地数据库? 检查你的database.yml ,并确保你打到你想要的PG数据库。 使用rails console进行确认。

在Ubuntu本地用户命令提示符下,但不是root用户,键入

sudo -u postgres createuser用户名

上面的用户名应该与消息“FATAL:role'用户名'不存在”中指定的名称匹配。

input用户名的密码。

然后重新input生成angular色不存在的消息的命令。

在尝试按照Ryan Bate的教程部署到使用橡胶的AWS EC2之后,我在这里结束了。 以下是我发生的事情:我们创build了一个新的应用程序,使用“

rails new blog -d postgresql

显然这创build了一个新的应用程序与数据库的pg,但数据库还没有制定。 用sqlite,你只需运行rake db:migrate,但是用pg你需要先创buildpg数据库。 瑞安没有做这一步。 命令是rake db:create:all ,那么我们可以运行rake db:migrate

第二部分是更改database.yml文件。 生成文件时用户名的默认值是“appname”。 然而,你的postgresqlpipe理员的angular色可能是不同的(至less是我)。 我把它改成了我的名字(见上面有关创buildangular色名称的build议),我很高兴。

希望这可以帮助。

经过一堆Postgres的安装和卸载之后,现在看起来像Os X Mavericks,Rails 4和Ruby 2一直在为我工作。

  1. 在database.yml文件中,我将默认用户名更改为我的计算机用户名,对我而言,这只是“admin”。

  2. 在命令行运行rake db:create:all

  3. 然后我运行rake db:migrate

  4. 当我运行rails服务器,并检查本地主机说:“欢迎登机”。

我的回答更简单。 刚刚去了db文件夹,并删除了id列,我试图强制创build,但实际上是自动创build的。 我也删除了database.yml文件中的USERNAME(在config文件夹下)。

您可以通过运行initdb -U postgres -D /path/to/data或以用户postgres运行它,因为它默认为当前用户。 GL!