Postgresql
在 PostgreSQL URL 中,我不能使用包含特殊字元的密碼
我在 Azure 中有一個 postgresql 數據庫
passwd字元串具有如下特殊字元:
)mvd99/iyH_=ag=Por/W}%%aKY^ygt+,sC7%%P?APOU
psql --dbname=postgresql://db_user@mydemoserver:)mvd99/iyH_=ag=Por/W}%%aKY^ygt+,sC7%%P?APOU@mydemoserver.postgres.database.azure.com:5432/mydb
執行 psql 命令時,它向我顯示以下錯誤:
psql: invalid percent-encoded token: "iyH_=ag=Por/W}%%aKY^ygt+,sC7%%P"
我已經嘗試將 passwd 字元串放在引號中,但它不起作用
我還有什麼其他選擇?我無法更改密碼
我對使用 psql 客戶端很感興趣,因為我必須進行非常大的備份
您必須對所有有問題的字元使用 URI 轉義。
對於這個使用者:
CREATE ROLE "weird@name" PASSWORD '\/ @&?' LOGIN;
你可以這樣登錄:
psql postgresql://weird%40name:%5C%2F%20%40%26%3F@localhost:5432/test
文件有它:
百分比編碼可用於在任何 URI 部分中包含具有特殊含義的符號,例如替換
=
為%3D
.
無論如何,在命令行/URL 中指定密碼並不是一個好主意。如果您使用
.pgpass
1文件或PGPASSFILE
環境變數,則可以解決此問題。話雖如此,僅使用字母數字(URL 安全,例如十六進制)密碼同樣安全且更便攜(如果它是隨機的且足夠長的話)。