我正在尝试使用bash脚本中的URL格式连接到postgres数据库:
psql "postgresql://larryq:password!@localhost:5432/postgres"
..无论如何,我会收到一条有关未发现!@localhost
事件的消息。
我已经看过文档,但是不确定发生了什么或如何逃避感叹号。我已经尝试过用单引号引起来,在此之前我已经尝试过使用反斜杠,但是没有任何效果。
使用相同的格式,但是用户的密码中没有感叹号,效果很好。我怎么能在里面惊叹不已?
答案 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=>