【问题标题】:authentication error for PostgreSQL user?PostgreSQL 用户的身份验证错误?
【发布时间】:2015-08-15 16:20:24
【问题描述】:

我正在尝试在 ruby​​ on rails 项目中运行 rake db:create db:migrate db:seed,我收到错误消息 FATAL: password authentication failed for user "postgres"

看了其他类似的问题,很多人指出pg_hba文件中的validity bug,但据我所知,没有问题?

local   all             postgres                                md5    
local   all             all                                     peer
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

我也遇到了这个sudo -u postgres psql -x -c "select * from pg_user where usename='p并得到了以下信息:

-[ RECORD 1 ]---------
usename     | postgres
usesysid    | 10
usecreatedb | t
usesuper    | t
usecatupd   | t
userepl     | t
passwd      | ********
valuntil    | 
useconfig   | 

更多信息:系统 Ubuntu 14.04 在 vagrant box 中运行,带有 postgres v9.3。

更新:我按照此处找到的说明创建了一个新数据库和一个新用户enter link description here,将新信息添加到配置目录中的 database.yml 文件中,以确保我我正在使用数据库用户而不是系统用户。

update-2:这里是database.yml文件开发中找到的信息:

development:
  adapter: postgresql
  encoding: unicode
  host: localhost
  database: db1
  pool: 5
  username: dev1
  password: dev1
test:
  adapter: postgresql
  encoding: unicode
  host: localhost
  port: 5432
  database: db_test1
  pool: 5
  username: dev1
  password: dev1

【问题讨论】:

  • 您输入的是正确的密码还是希望在没有密码的情况下连接?
  • @alexius ,我已经在 database.yml 文件中设置了密码,我尝试使用 su - postgres 使用该密码登录,它确实有效吗?
  • 当您在 postgres 用户下连接时,您很可能根据您的 pg_hba 文件使用对等身份验证(不需要密码)。应用程序可能连接到 localhost 而不是 unix 套接字并接收密码提示。尝试在 postgres 用户下连接并添加-h 127.0.0.1 以检查密码是否正确。
  • 你能告诉我要使用的确切命令格式吗?抱歉,我是新手
  • 我是想用 psql:psql -h 127.0.0.1 检查密码是否正确

标签: ruby-on-rails ruby database ruby-on-rails-3 postgresql


【解决方案1】:

由于可能有很多因素,因此很难指出您的设置有什么问题。我想我会尝试讲述我如何使用 vagrant + rails + postgresql 所以我希望这对你有所帮助。这假设你有一个全新的 Ubuntu 14.04 vagrant box。

假设您已经为 ruby​​ + rails 安装了必要的软件包。现在你要安装 postgresql。

sudo apt-get install postgresql postgresql-contrib libpq-dev

然后您将登录到您的 postgresql 管理员用户:

sudo su postgres
psql

一旦登录到 psql 控制台,我通常会创建一个名为 vagrant 的用户。我这样做是因为 postgresql 在登录到 db 控制台时默认使用当前 shell 用户作为数据库用户。这更方便(无论如何对我来说)。然后我也会在控制台中创建数据库。之后,我将数据库权限授予用户vagrant

CREATE USER vagrant WITH PASSWORD 'password';
CREATE DATABASE db1;
GRANT ALL PRIVILEGES ON DATABASE db1 to vagrant;

在这些步骤之后,我只需添加适当的database.yml 配置并运行rake db:migrate。我发现这些工作流程对我很有效,而且我从未遇到过任何许可问题。我也从未使用此设置碰过pg_hba.conf。请尝试一下,我希望这能解决您的问题。

干杯!

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 1970-01-01
    • 2015-12-01
    • 2016-07-30
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    相关资源
    最近更新 更多