使用Postgres URL连接并在密码中带有感叹号

时间:2019-11-11 21:50:00

标签: bash postgresql psql

我正在尝试使用bash脚本中的URL格式连接到postgres数据库:

psql "postgresql://larryq:password!@localhost:5432/postgres"

..无论如何,我会收到一条有关未发现!@localhost事件的消息。

我已经看过文档,但是不确定发生了什么或如何逃避感叹号。我已经尝试过用单引号引起来,在此之前我已经尝试过使用反斜杠,但是没有任何效果。

使用相同的格式,但是用户的密码中没有感叹号,效果很好。我怎么能在里面惊叹不已?

1 个答案:

答案 0 :(得分:1)

您可以将密码存储在PGPASSWORD中并致电psql

edb=# create role foouser with password 'abc123!';
CREATE ROLE
edb=# alter user foouser with login;
ALTER ROLE
edb=> \q
[root@dba /]# PGPASSWORD='abc123!' psql "postgresql://foouser@localhost:5432/edb"
psql.bin (10.10.18)
Type "help" for help.

edb=>

[root@dba /]# PD='abc123!'
[root@dba /]# echo "postgresql://foouser:${PD}@localhost:5432/edb"
postgresql://foouser:abc123!@localhost:5432/edb
[root@dba /]# psql "postgresql://foouser:${PD}@localhost:5432/edb"
psql.bin (10.10.18)
Type "help" for help.

edb=>