当前位置: 首页 > 知识库问答 >
问题:

Capistrano postgresql:致命:用户的对等身份验证失败

谭健柏
2023-03-14

我第一次将应用程序部署到数字海洋,遇到了两个(可能更多)问题。

1) 在将gem“unicorn”添加到Gemfile后,我无法捆绑安装。我发现kgio与windows不兼容。我必须要Gemfile吗。当我通过capistrano部署时是否存在锁?我如何解决这个问题?

group :production do
  gem 'pg', '0.14.1'
  gem "nginx"
  gem 'unicorn'
end

2)我在服务器上的postgreql上遇到身份验证问题。

production:
  adapter: postgresql
  encoding: unicode
  database: postgresql
  pool: 5
  username: postgresql
  password: secret

我运行了这些命令(以及其他一些命令):

create user postgresql with password 'secret';
create database postgresql with owner postgresql;

每次我限制部署时,我都会收到这个错误:

FATAL: Peer authentication failed for user "postgresql"

我尝试输入一个我知道不存在的无效用户名,一个无效的数据库,但错误消息始终相同。根据postgreql网站,我应该会收到这些不同的错误……

如果我能得到一些帮助,那就太好了。谢谢大家!

共有2个答案

夏炎彬
2023-03-14

您必须首先在 pg_hba.conf 文件中设置 Postgres 的密码或 md5(更安全:scram-sha-256,因为 Postgres 11)身份验证。

只要只允许ident或peer身份验证,就不会提示密码。您只能以与您的系统用户对应的db角色登录。

顺便说一句,数据库角色和操作系统用户通常被称为postgres,而不是postgresql。我想这不是错字吗?

在外壳中尝试:

sudo -u postgres -i

然后以postgresdb角色登录并进行对等身份验证。

看:

  • PostgreSQL错误:致命:角色“用户名”不存在
  • 使用不带密码的psql命令运行批处理文件
林富
2023-03-14

您需要指定密码验证的主机。

production:
  adapter: postgresql
  encoding: unicode
  database: postgresql
  pool: 5
  host: localhost
  username: postgresql
  password: secret

更多细节在这里

 类似资料: