Postgresql

在 PostgreSQL URL 中,我不能使用包含特殊字元的密碼

  • October 11, 2021

我在 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 中指定密碼並不是一個好主意。如果您使用.pgpass1文件或PGPASSFILE環境變數,則可以解決此問題。

話雖如此,僅使用字母數字(URL 安全,例如十六進制)密碼同樣安全且更便攜(如果它是隨機的且足夠長的話)。

引用自:https://dba.stackexchange.com/questions/243219