与包含(@)的用户名和URL

时间:2019-06-28 08:55:06

标签: psql

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

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

如您所见,我的登录名包含在({@)中,例如我的登录名是: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

但这没有效果(我使用Windows 10 cmd.exe)

1 个答案:

答案 0 :(得分:0)

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

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

如果您是从cmdbat文件开始的,请使用如下格式屏蔽百分号(%):

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