Postgresql 单引号和双引号在postgres密码中是否有效?

Postgresql 单引号和双引号在postgres密码中是否有效?,postgresql,Postgresql,我正在写一个bash脚本,它必须处理postgres密码。找不到任何明确的引用,无法知道Postgres密码中是否允许使用单引号和双引号。首先需要知道这是否是一个有效的用例 请为您的答案引用参考资料 是的,它们是有效的。任何字符都是有效的。但有些是不合理的使用。例如,您甚至可以使用UTF密码,但我不会使用选项卡,演示: db=# do $$ begin execute format('create user s password %L ',concat(chr(10),chr(9),'a'));

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


请为您的答案引用参考资料

是的,它们是有效的。任何字符都是有效的。但有些是不合理的使用。例如,您甚至可以使用UTF密码,但我不会使用选项卡,演示:

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)
或:

但现在想象一下,你们必须用键盘在终端中输入密码——你们可以多么舒适地使用新行和表格,输入密码

因此,同样-密码允许使用任何字符,但如果您这样做,则不建议使用所有字符

create user s password 'my''Pass'
alter user s password 'my''Pass'

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

是,它们是有效的。任何字符都是有效的。但有些是不合理的使用。你甚至可以使用UTF密码,但我不会使用tab
create user s password 'my''Pass'
alter user s password 'my''Pass'