PostgreSQL pg_dump 失败:密码身份验证错误,密码中包含特殊字符

问题描述 投票:0回答:1

我正在尝试使用存储过程从 PostgreSQL 执行 pg_dump 命令。我的设置使用 EXECUTE 格式来动态构建命令。这是相关代码:

    'COPY (SELECT 1) TO PROGRAM ''script -c "PGPASSWORD=%s pg_dump -h %s -p %s -U %s -Z6 -Fc -v -d %s -t %s -f %s%s.sql" %s%s_log.txt''',
    ppassword, phost, pport, pusername, pdbname, atablename, pdumppath, atablename, plogdumppath, atablename
);

使用用户名和密码“postgres”可以正常工作。 但是,当 ppassword 值包含特殊字符(如 @ddG$fG#2@91)并且我执行此操作时,出现以下错误:

FATAL: password authentication failed for user "user_name"
connection to server at "ip_address", port xxxx failed: 
FATAL: password authentication failed for user "user_name"

我已确认以下事项:

用户名、主机、端口、数据库名、表名均正确,并且与“postgres”用户具有相同的权限。 在 PGPASSWORD 环境变量中手动使用或使用 psql 登录时,密码可以正常工作。 问题似乎出在密码中的特殊字符。

Postgresql 版本:16。

在这种情况下如何正确地将这样的密码传递给 pg_dump 命令?

postgresql pg-dump postgresql-16
1个回答
0
投票

您的程序以系统用户“postgres”运行,无需进行身份验证即可运行 pg_dump 您已经是数据库超级用户。

只需在命令中保留用户名和密码即可。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.