如何处理Postgresql URL连接字符串密码中的特殊字符?

如何处理Postgresql URL连接字符串密码中的特殊字符?,postgresql,url,connection-string,postgresql-9.1,Postgresql,Url,Connection String,Postgresql 9.1,使用以下格式的Postgresql URL连接字符串: postgresql://user:secret@localhost 如何处理该字符串中的特殊字符(例如,$),以便在连接到我的postgres数据库时,该字符串实际起作用 我尝试过简单的URL编码,例如,“test$”变成了“test%24”。。。但这似乎是一个问题,因为我在尝试使用时遇到了“致命:密码验证失败”错误。请参阅文档中的 在你的问题中,有几点似乎不太正确: 自版本9.2以来,postgres仅支持URI,因此9.1客户端根

使用以下格式的Postgresql URL连接字符串:

postgresql://user:secret@localhost
如何处理该字符串中的特殊字符(例如,$),以便在连接到我的postgres数据库时,该字符串实际起作用

我尝试过简单的URL编码,例如,“test$”变成了“test%24”。。。但这似乎是一个问题,因为我在尝试使用时遇到了“致命:密码验证失败”错误。

请参阅文档中的

在你的问题中,有几点似乎不太正确:

  • 自版本
    9.2以来,postgres仅支持URI,因此
    9.1
    客户端根本不应该工作。或者您使用的客户端本身实现了连接URI

  • 支持百分号编码。每份文件:

    百分比编码可用于包括具有特殊含义的符号 在任何URI部分中

  • 美元字符甚至不需要百分比编码

尝试使用9.3:

sql>alteruser-daniel密码'p$ass'

$ psql 'postgresql://daniel:p$ass@localhost/test'
工作

工作


按预期失败:密码错误。

可能您的输入shell具有不同的编码,
$
不是
%24
。 请在

提示: 如果您使用
alter user“username”password“p$ass”“word”
设置/更改密码,
单引号必须用另一个单引号屏蔽。

您使用的URL编码方法到底是什么?如果特殊字符是te“@”符号会怎么样?@Fjordo
@
必须作为
%40
传入。另请参见用于此项的正确库;)即使我有同样的问题,密码是“@”,我也会尝试用“{@}”,“@”,“@”,“原始(@),\”等来转义。它们都不适合我。
$ psql 'postgresql://daniel:p%24ass@localhost'
psql 'postgresql://daniel:pass@localhost/test'