在 PostgreSQL URL 中,我不能使用包含特殊字符的密码

San*_*anx 7 postgresql psql password

我在 Azure 中有一个 postgresql 数据库

passwd中的字符串中包含特殊字符这样的:

)mvd99/iyH_=ag=Por/W}%%aKY^ygt+,sC7%%P?APOU
Run Code Online (Sandbox Code Playgroud)
psql --dbname=postgresql://db_user@mydemoserver:)mvd99/iyH_=ag=Por/W}%%aKY^ygt+,sC7%%P?APOU@mydemoserver.postgres.database.azure.com:5432/mydb
Run Code Online (Sandbox Code Playgroud)

执行 psql 命令时,它显示以下错误:

psql: invalid percent-encoded token: "iyH_=ag=Por/W}%%aKY^ygt+,sC7%%P"
Run Code Online (Sandbox Code Playgroud)

我已经尝试将 passwd 字符串放在引号中,但它不起作用

我还有什么其他选择?我无法更改密码

我对使用 psql 客户端很感兴趣,因为我必须做非常大的备份

Lau*_*lbe 7

您必须对所有有问题的字符使用 URI 转义。

对于此用户:

CREATE ROLE "weird@name" PASSWORD '\/ @&?' LOGIN;
Run Code Online (Sandbox Code Playgroud)

你可以这样登录:

psql postgresql://weird%40name:%5C%2F%20%40%26%3F@localhost:5432/test
Run Code Online (Sandbox Code Playgroud)

文档中有它:

百分比编码可用于在任何 URI 部分中包含具有特殊含义的符号,例如替换=%3D