rake db:create failed,postgresql 8.4的身份验证问题

m_x*_*m_x 6 authentication rake ruby-on-rails rails-postgresql

首先,请原谅我的完全noobness.我真的试图找到一个解决方案,但现在我陷入困境,完全无能为力.

我正在尝试在远程服务器上部署rails 3应用程序; 在我的本地VM上开发时,没有问题显示.但现在,当我试图跑

rake db:create
Run Code Online (Sandbox Code Playgroud)

它失败了,有错误(这里翻译,因为我是法国人):

FATAL : password authentication failed for user <<mylogin>>
Run Code Online (Sandbox Code Playgroud)

这是我的database.yml:

login: &login
  adapter: postgresql
  username: mylogin
  password: mypassword
  host: localhost
  port: 5432
  encoding: UTF8

development:
  <<: *login
  database: somesite_development

test:
  <<: *login
  database: somesite_test

production:
  <<: *login
  database: somesite_production
Run Code Online (Sandbox Code Playgroud)

使用命令行工具"createuser"在postgre-side创建了用户"mylogin".它被授权创建dbs.postgresql.conf配置服务器监听localhost.我用pg_hba.conf尝试了很多东西,没有用 - 无论在127.0.0.1上用户"mylogin"使用的方法(ident,密码,md5),身份验证都失败了 - 尽管我从未遇到过连接/创建dbs的问题PSQL.

任何线索?

编辑:好的,发现我是多么令人难以置信的愚蠢...我的用户的密码根本没有设置!我想我忘记了分号了

ALTER USER xxxx WITH PASSWORD xxxx;

...我通过请求"SELECT*FROM pg_shadow;"看到了这一点. - 密码字段为空.因为这个愚蠢的错误,我浪费了三天的生命......

小智 19

我也被困在这个问题很长一段时间了,并且去了各种各样的链接(包括这篇文章中提供的链接)试图找到答案,但无济于事.但是,解决方案非常简单.虽然许多其他答案都在正确的轨道上,但这里是解决问题的确切步骤:

  1. 在您选择的文本编辑器中打开您的pg_hba.conf文件.(它位于/ etc/postgresql // main)

  2. 导航到以下行:

    #"local"仅适用于Unix域套接字连接

并粘贴在它下面:

  local all         all                 trust
Run Code Online (Sandbox Code Playgroud)

这将信任所有尝试连接到本地计算机上的psql服务器的unix用户.(有关列功能的更多信息,请阅读页面顶部的文档)

  1. 保存pg_hba.conf文件并退出文本编辑器.

  2. 运行以下命令重新启动Postgresql服务器:

    service postgresql restart

  3. 现在尝试通过运行以下命令启动psql服务器:

    psql -d -U(或简称"psql")

  4. 你应该能够毫无问题地登录.

*注意:所有这些都假设您有一个有效的psql用户名用于登录.如果您没有按照以下链接设置一个:

设置用户:http: //erikonrails.snowedin.net/?p = 274

确保你有一个有效的postgres用户:http: //archives.postgresql.org/pgsql-novice/2002-08/msg00072.php

列出所有现有的psql用户:如果您正在寻找"LIST USERS"或"DISPLAY USERS"命令,请尝试:

"select*from pg_user;" (登录psql时)

祝好运!

  • 谢谢,但这个问题已经被接受了答案...(问题只是我愚蠢>.<)此外,我不认为"嘿,让我们删除所有安全性并让所有本地用户"解决方案是非常好的主意,尤其是当您与来自不同公司的许多其他用户共享服务器时. (3认同)

m_x*_*m_x 4

好吧,发现我是多么愚蠢……我的用户密码根本就没有设置!我想我忘记了分号

ALTER USER xxxx WITH PASSWORD xxxx ;
Run Code Online (Sandbox Code Playgroud)

...我通过请求“SELECT * FROM pg_shadow;”看到了这一点 - 密码字段为空。因为这个愚蠢的错误,我浪费了三天的生命......