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

时间:2014-04-29 00:46:08

标签: postgresql url connection-string postgresql-9.1

使用Postgresql URL连接字符串,格式为:

postgresql://user:secret@localhost

如何处理该字符串中的特殊字符(例如 $ ),以便在连接到postgres数据库时它实际起作用?

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

2 个答案:

答案 0 :(得分:9)

请参阅文档中的Connection URIs

在你的问题中,有些事情似乎不太正确:

  • 仅从版本9.2开始支持postgres的URI,因此9.1客户端根本不应该工作。或者您正在使用实现连接URI的客户端。

  • 支持百分号编码。按医生:

      

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

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

试过9.3:

sql> alter user daniel password 'p$ass';

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

作品

$ psql 'postgresql://daniel:p%24ass@localhost'

作品

psql 'postgresql://daniel:pass@localhost/test'

按预期失败:密码错误。

答案 1 :(得分:0)

也许您的输入Shell的编码不同,而$不是%24。 在https://www.urlencoder.org/

上签出

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