如何处理Postgresql URL连接字符串密码中的特殊字符?
使用以下格式的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://user:secret@localhost
如何处理该字符串中的特殊字符(例如,$),以便在连接到我的postgres数据库时,该字符串实际起作用
我尝试过简单的URL编码,例如,“test$”变成了“test%24”。。。但这似乎是一个问题,因为我在尝试使用时遇到了“致命:密码验证失败”错误。请参阅文档中的
在你的问题中,有几点似乎不太正确:
- 自版本
9.2以来,postgres仅支持URI,因此
客户端根本不应该工作。或者您使用的客户端本身实现了连接URI9.1
- 支持百分号编码。每份文件: 百分比编码可用于包括具有特殊含义的符号 在任何URI部分中
- 美元字符甚至不需要百分比编码
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'