来自Capistrano的Postgresql身份验证失败

腰突

我正在尝试使用Capistrano部署Rails应用程序。我或多或少配置了Capistrano。我知道它有效,因为我已经部署了另一个使用SQLite作为数据库的应用程序。现在,当前使用的是Postgresql,我不知道为什么Capistrano无法通过身份验证。capstrano尝试执行时显示的错误exec bundle exec rake db:migrate如下:

PG::ConnectionBad: FATAL:  password authentication failed for user 'nameofrailsapplication'

目前,我正在服务器上尝试此配置:

/etc/postgresql/9.3/main/pg_hba.conf

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

我摆弄了md5trust但不是ConnectionBad错误而是密码错误。由于我现在不希望Capistrano交互地要求输入密码,所以我的想法md5还很遥远。

我的本地配置:

Capfile

require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/rbenv'
require 'capistrano/bundler'
require 'capistrano/rails/migrations'
require 'capistrano/postgresql'
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }

capistrano/postgresql宝石似乎做的工作做好,在部署邮件中我可以看到,它确实需要数据库名称,并创建它获取到服务器通过一个密码。为了安全起见,我在deploy.rb中配置了数据库名称:

config / deploy.rb

 # config valid only for Capistrano 3.1
lock '3.2.1'

set :application, "nameofrailsapplication"
set :pg_database, "nameofrailsapplication"
set :repo_url, "[email protected]:gituser/repo-name.git"

set :deploy_to, "/var/www/#{fetch(:application)}"
set :deploy_user, "deployers"

# Default value for :linked_files is []
set :linked_files, %w{config/database.yml}

# Default value for linked_dirs is []
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}

我怀疑deploy_user与postgresql用户(与数据库名称相同)不同的事实可能会在这里引起麻烦。deployers数据库中不存在系统用户,系统上的数据库用户也不存在。

配置/ database.yml

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5

development:
  <<: *default
  database: nameofrailsapplication_development
test:
  <<: *default
  #database: nameofrailsapplication_test
  database: nameofrailsapplication_test

production:
  <<: *default
  database:nameofrailsapplication
  username: nameofrailsapplication
  password: <%= ENV['NAME-OF-RAILS-APPLICATION_DATABASE_PASSWORD'] %>

我可能要提到的最后一件事是,我还在使用figaro gem,它将gemdata.yml复制到服务器上。为此,我运行以下capistrano任务:

namespace :figaro do
  desc "SCP transfer figaro configuration to the shared folder"
  task :setup do
    on roles(:app) do
      upload! "config/application.yml","#{shared_path}/application.yml", via: :scp
    end
  end

  desc "Symlink application.yml to the release path"
  task :symlink do
    on roles(:app) do
      execute "ln -sf #{shared_path}/application.yml #{current_path}/config/application.yml"
    end
  end
end
after "deploy:started", "figaro:setup"
after "deploy:symlink:release", "figaro:symlink"

任何建议,不胜感激!

编辑1:我在git和服务器上正确设置了ssh密钥。

编辑2:我可以从本地以“ nameofrailsapplication”身份登录数据库,没有任何问题。

腰突

我终于找到了解决方案,实际上非常简单。我有点想当然地认为capistrano / postgresql插件负责管理整个创建用户和登录业务,所以我自己应该在服务器端进行处理并没有引起我的注意。

无论如何,我所做的就是浏览服务器上的数据库文件(由capistrano创建),检索capistrano生成的密码,最后登录到postgres用户,将railsuser密码更改为文件中的密码。解决了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails Capistrano身份验证失败错误

来自分类Dev

Rails Capistrano身份验证失败错误

来自分类Dev

PostGreSQL身份验证失败,带有“信任”选项

来自分类Dev

Git和Capistrano:Visual Studio Team Foundation Server 2013(TFS)的身份验证失败

来自分类Dev

Git和Capistrano:Visual Studio Team Foundation Server 2013(TFS)的身份验证失败

来自分类Dev

SslStream身份验证失败

来自分类Dev

PHPMailer身份验证失败

来自分类Dev

Heroku身份验证失败

来自分类Dev

MongoDB身份验证失败?

来自分类Dev

Shiro身份验证失败

来自分类Dev

MongoError:身份验证失败

来自分类Dev

身份验证失败:omniauth

来自分类Dev

VNC身份验证失败

来自分类Dev

LightDM:“身份验证失败”

来自分类Dev

Paramiko身份验证失败/身份验证异常

来自分类Dev

使用 nestjs 身份验证时身份验证失败

来自分类Dev

来自同一主机的多个SSH-过多的身份验证失败

来自分类Dev

来自 Node.js 的 Microsoft Dynamics NAV '18 Web 服务的 NTLM 身份验证失败

来自分类Dev

来自网站的Google API身份验证

来自分类Dev

来自 filebeat 的 Cognito 身份验证

来自分类Dev

来自 Artifactory 的 LDAP 身份验证

来自分类Dev

严重的:身份验证失败,Git Bash

来自分类Dev

基于JBoss表单的身份验证失败

来自分类Dev

RestSharp BitStamp身份验证失败

来自分类Dev

MongoDB-CR身份验证失败

来自分类Dev

FEDEX API,身份验证失败

来自分类Dev

身份验证失败-权限被EmberFire拒绝

来自分类Dev

ftp_login身份验证失败

来自分类Dev

SASL LDAP身份验证失败