与包含 (@) 的用户名一起使用并使用 URL 时出现 psql 错误

psql error when used with username containing at (@) and using URL

我正在尝试使用 CLI (psql) 连接到我的 PostgreSQL 11.3 服务器。我需要在命令行中设置密码(不能使用环境变量 PGPASSWORD)。 我正在尝试使用 URL 来访问这样的数据库:

psql postgresql://username@server:password@server.full.name:5432/db_name

如您所见,我的登录名中包含 at (@),例如我的登录名是:username@server.

我收到错误:

psql: Invalid port number: "password@server.full.name:5432/db_name"

我想 psql CLI 首先在 (@) 处解析为用户名和服务器名称之间的分隔符。是 psql CLI 错误吗?

如何在URL中传递这样的用户名(包含@)以正确启动psql?

谢谢!

更新 1:

我的同事建议在登录名和密码之间使用 %40 而不是冒号 :,如下所示:

psql postgresql://username@server%40password@server.full.name:5432/db_name

但是这个没有效果(我用的是Windows10,cmd.exe)

经过一番调查,我找到了一个解决方案(为了其他人的利益):

psql postgresql://username%40server:password@server.full.name:5432/db_name

如果您从 cmdbat 文件启动它,请屏蔽百分号 (%),如下所示:

psql postgresql://username%%40server:password@server.full.name:5432/db_name