pg_passwd

名称

pg_passwd — 操作平面口令文件

语法

pg_passwd filename

描述

pg_passwd 是一个操作 Postgres 的平面口令文件的工具。这样的口令认证方式并非一个安装所必须的,但却是几种支持的安全机制之一。

$PGDATA/pg_hba.conf 里用与 Ident 认证声明相同的风格声明口令文件:

host  unv     133.65.96.250   255.255.255.255 password passwd
上面这一行允许从 133.65.96.250 来的用户使用在 $PGDATA/passwd 里列出来的口令访问。该口令文件的格式遵循 /etc/passwd/etc/shadow 的格式。第一个域是用户名,第二个域是加密的口令。其他是完全没有用的。因此下面三行声明同样的用户-口令对:
pg_guest:/nB7.w5Auq.BY:10031::::::
pg_guest:/nB7.w5Auq.BY:93001:930::/home/guest:/bin/tcsh
pg_guest:/nB7.w5Auq.BY:93001
给 pg_passwd 命令提供口令文件。在上面例子中,在把工作目录改到 PGDATA 后,执行下面的命令给用户 pg_guest 声明新口令:
        % pg_passwd passwd
        Username: pg_guest
        Password:
        Re-enter password:
这里的 Password:Re-enter password: 提示需要相同的口令输入,这些口令不会在终端显示。初始的口令文件被改为 passwd.bk

psql 使用 -u 选项激活这个风格的认证。

下面行显示这个选项的用法示例:

% psql -h hyalos -u unv
Username: pg_guest
Password:
Welcome to the POSTGRESQL interactive sql monitor:
  Please read the file COPYRIGHT for copyright terms of POSTGRESQL
   type \? for help on slash commands
   type \q to quit
   type \g or terminate with semicolon to execute query
 You are currently connected to the database: unv
unv=>
Perl5 认证使用新的 Pg.pm 风格,象:
$conn = Pg::connectdb("host=hyalos dbname=unv
                       user=pg_guest password=xxxxxxx");
更多细节,请参考 src/interfaces/perl5/Pg.pm

Pg{tcl,tk}sh 认证使用 pg_connect 带 -conninfo 选项的命令,象:

% set conn [pg_connect -conninfo \\
            "host=hyalos dbname=unv \\
             user=pg_guest password=xxxxxxx "]
你可以通过执行下面命令列出该选项的所有关键字:
% puts [ pg_conndefaults]