选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.4 已于 2020 年 2 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页

F.6. chkpass #

此模块实现了用于存储加密密码的数据类型chkpass。每个密码在输入时都会自动转换为加密形式,并且始终以加密形式存储。比较时,只需与明文密码比较,比较函数会在比较之前将其加密。

代码中预留了在判定密码容易被破解时报告错误的机制。不过,目前这只是一个不做任何事情的占位实现。

如果在输入字符串前加上冒号,它就会被视为已加密的密码,直接存储而不再加密。这样就可以输入以前加密过的密码。

输出时会在前面加上冒号。这样就可以转储并重新载入密码,而不必重新加密。如果需要不带冒号的加密密码,请使用raw()函数。这样就可以将此类型与 Apache 的Auth_PostgreSQL模块等工具一起使用。

加密使用标准 Unix 函数crypt(),因此也受该函数所有常见限制的影响,尤其是只考虑密码的前八个字符。

请注意,chkpass数据类型不能建立索引。

使用示例:

test=# create table test (p chkpass);
CREATE TABLE
test=# insert into test values ('hello');
INSERT 0 1
test=# select * from test;
       p
----------------
 :dVGkpXdOrE3ko
(1 row)

test=# select raw(p) from test;
      raw
---------------
 dVGkpXdOrE3ko
(1 row)

test=# select p = 'hello' from test;
 ?column?
----------
 t
(1 row)

test=# select p = 'goodbye' from test;
 ?column?
----------
 f
(1 row)

F.6.1. 作者

D'Arcy J.M. Cain(

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。