我正在编写一个bash脚本,它必须处理postgres密码。无法找到任何明确的参考,以了解Postgres密码中是否允许使用单引号和双引号。需要知道这是否是一个有效的用例。
请引用您的答案参考。
答案 0 :(得分:3)
db=# do $$ begin execute format('create user s password %L ',concat(chr(10),chr(9),'a')); end;$$;
DO
需要有效密码的演示:
db=# select * from dblink('postgresql://s:badPass@1.1.1.1:5432/t','select now()') as t (t timestamptz);
ERROR: could not establish connection
DETAIL: FATAL: password authentication failed for user "s"
成功登录的演示:
db=# select * from dblink('postgresql://s:'||concat(chr(10),chr(9),'a')||'@1.1.1.1:5432/t','select now()') as t (t timestamptz);
t
-------------------------------
2018-01-08 13:20:45.149144+00
(1 row)
或:
[postgres@1 ~]$ export PGPASSWORD=$(echo -e "\n\ta")
[postgres@1 ~]$ psql -h 1.1.1.1 -p 5432 -U s
Timing is on.
psql (9.5.4)
Type "help" for help.
s=>
但是现在想象你必须使用键盘在终端中输入密码 - 你可以使用新行和制表,输入密码这么舒适吗?..
因此再次 - 允许任何字符密码,但不是所有建议的
答案 1 :(得分:0)
如果愿意
SELECT setval('"Claims_ClaimId_seq"', 34, true);
单引号字符必须用另一个单引号转义