我正在使用postgres,我创建了db,user,password,这是密码:
密码= name&text@sob
我正在使用以下命令来转储数据库,它可以在我拥有的其他数据库上运行:
pg_dump -Fc --no-acl --no-owner --dbname=postgresql://db_user:password@127.0.0.1:5432/db_name
但使用包含&
和@
的密码的数据库时,它不起作用:
pg_dump -Fc --no-acl --no-owner --dbname=postgresql://db_user:name&text@sob@127.0.0.1:5432/db_name
&
和@
,无法正常工作 - 所以我使用&
转义\
,但它不适用于{{1} - 任何建议?
由于
答案 0 :(得分:4)
添加?password=name%26text%40sob
作为uri参数应该执行:
pg_dump -Fc --no-acl --no-owner --dbname=postgresql://db_user:password@127.0.0.1:5432/db_name?password=name%26text%40sob
根据https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING
URI的层次结构部分的组成部分也可以给出 参数。
<强>更新强>
正如Roko所注意到的,网址必须是encoded
答案 1 :(得分:1)
您可以直接在连接字符串中对符号进行编码,无需使用额外的URL参数。
--dbname=postgresql://db_user:name%26text%40sob@127.0.0.1:5432/db_name