首页 > 解决方案 > 将 Windows postgresql 数据库备份到远程(unix)服务器 - 身份验证问题

问题描述

我运行 Davinci Resolve Studio,它使用 Postgres 数据库来共享对其项目的访问。

我想将 Windows (postgres-9.5) 数据库 ("resolve_main") 备份到现有的 Ubuntu 20.04 (postgres-12) postgres 服务器。

在 Windows 机器上,数据库用户是 postgres;在 Ubuntu 系统上,用户是 dennis。

在 Windows 机器上(此复制过程将起源于此),我已经使用这些值设置了 %APPDATA%\postgresql\pgpass.conf(有些在这里被屏蔽了......)。但在我看来,症状表明该文件没有被处理。

    #hostname:port:database:username:password
    localhost:5432:postgres:D....
    hpmicro1:5432:dennis:p....
    *:5432:postgres:D....

我尝试使用的备份命令是:

    pg_dump -C -h localhost -U postgres resolve14_main | psql -h hpmicro1 -U dennis resolve14_main

如果我尝试在新的 shell 中执行上述命令字符串,我会收到以下错误:

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

如果我通过 SET PGPASSWORD=D.... 为 postgres 用户的密码设置 Windows 环境变量,则错误将变为:

    psql: FATAL:  password authentication failed for user "dennis"
    FATAL:  password authentication failed for user "dennis"
    pg_dump: [archiver] could not write to output file: Broken pipe

这样我就可以通过 pg_dump 的(Windows)安全性,但它使 psql 无法连接到 remjote。此外,如果我只键入 psql -U dennis -h hpmicro1,则会提示我输入密码。

所有这些让我相信我的 pgpass.conf 文件有问题。

演示文件位置及其(屏蔽)内容: 在此处输入图像描述

任何线索为了使这些命令使用该文件来设置适当的密码,我还需要做什么?或者如果这不是问题,我可能做错了什么?

标签: authenticationpostgresql-9.5postgresql-12

解决方案


推荐阅读