首页 > 解决方案 > 尝试从活动的 Rails 服务器进行 PG 转储并获取密码身份验证失败

问题描述

我正在尝试运行此命令

ssh -p <PORT> <user@server> 'PGPASSWORD=\"<production_password>\" pg_dump -U database_user #<production_database> -h 127.0.0.1 -F t' > <location>

我得到

pg_dump: [archiver (db)] connection to database "database_name" failed: FATAL: password authentication failed for user "database_user"

凭据必须正确,因为部署工作正常。

这是 CentOS 上实时运行的 RoR 应用程序,我试图遵循其他堆栈溢出答案,并意识到我没有目录var/lib/postgres,也没有/etc/postgresql. 我在寻找/etc/postgresql/9.4/main/pg_hba.conf

我不认为没有安装 postgres,因为我们正在积极运行 postgres 数据库。

我想要的只是将 rails pg 生产数据库转储到我的本地计算机!

任何线索都会非常有帮助。

--------添加我的 database.yml 配置--------

adapter: postgresql
  encoding: utf8
  host: 127.0.0.1
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  reconnect: true
  timeout: 5000

另一个需要补充的注意事项是,我们在同一台服务器上有 2 或 3 个 PG 数据库。

并且使用this_is_a_fake_db_name仍然给我带来了同样的错误。所以它肯定没有连接到我请求的数据库。

标签: ruby-on-railspostgresqlpg-dump

解决方案


我想我被阻止连接到我的数据库,这就是我无法通过身份验证的原因。

最后,我在服务器上将其备份为 sudo: (su postgres -c 'pg_dump -U postgres <db-name>') > <backupNAME>.sql

然后用SCP复制下来

scp -P <port> user@server:/path/to/<backupNAME>.sql <local/path/to/save>

感谢@lackoftactics 的帮助!


推荐阅读