2017-06-15 60 views
4

我使用postgres的中號postgres的當含有@密碼,我創建分貝,用戶密碼,這是密碼:逃生用的pg_dump命令

密碼= name&[email protected]

我使用下面的命令來轉儲數據庫和它的作品在我的其他數據庫,我有:

pg_dump -Fc --no-acl --no-owner --dbname=postgresql://db_user:[email protected]:5432/db_name

但如果使用DB含&@密碼時它不工作:

pg_dump -Fc --no-acl --no-owner --dbname=postgresql://db_user:name&[email protected]@127.0.0.1:5432/db_name

不會因爲受密碼的&@的工作,所以我逃過了&\,但它並沒有爲@工作 - 有什麼建議?

由於

回答

4

添加?password=name%26te‌​xt%40sob作爲uri參數應該做的:

pg_dump -Fc --no-acl --no-owner --dbname=postgresql://db_user:[email protected]:5432/db_name?password=name%26te‌​xt%40sob 

按照URI的分層部分的https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING

組件也可以被給定爲 參數。

更新

爲ROKO注意到,URL必須是encoded

+0

不工作 - 如果它是URL-不應在密碼中輸入'&'還需要轉義?我認爲它是'%26' – Roko

+0

是的 - 我錯過了你有'&' –

+0

它可以工作,如果你轉義密碼參數,所以 'pg_dump -Fc --no-acl --no-owner --dbname = postgresql: // db_user:[email protected]:5432/db_name?password = name%26text%40sob' 如果你更正了你的答案,我會標記爲正確的,Thx – Roko

1

您可以在連接字符串中直接編碼的標誌,沒有必要用額外的URL參數打擾。

--dbname=postgresql://db_user:name%26te‌​xt%[email protected]:5432/db_nam‌​e