postgres密码中的单引号和双引号是有效字符吗?

时间:2018-01-08 13:09:44

标签: postgresql

我正在编写一个bash脚本,它必须处理postgres密码。无法找到任何明确的参考,以了解Postgres密码中是否允许使用单引号和双引号。需要知道这是否是一个有效的用例。

请引用您的答案参考。

2 个答案:

答案 0 :(得分:3)

是的,它们是有效的。任何字符都有效。但有些使用起来不合理。例如,你甚至可以使用UTF密码,但我不会使用tab,demo:

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);

单引号字符必须用另一个单引号转义