PostgreSQL之psql 访问数据库的密码验证
程序员文章站
2024-03-21 12:27:28
...
psql 访问数据库涉及5个要素:
-U 用户名
-W 交互方式输入密码
-h 主机名
-p 端口号
-d 数据库名
一般客户端访问需要指定以上5个要素,类似于Oracle客户端 tnsnames.ora文件中的相关设定。
服务端通过psql访问数据库如果不指定,通常会查找用户环境变量的相关设置(譬如.bash_profile文件或创建的.mylocalenv文件)。
当然验证过程要受到pg_hba.conf文件的限制;要不要输入密码关联 method字段值md5或trust(可信的不需要密码验证)。
另外,需要说明的一点是:-W 选项的含义是必须以交互的方式输入密码,而不是在选项后边直接输入明文密码,区别于Oracle 或DB2的输入密码明文,这一点应该是出于安全性的考虑。
示例:
[[email protected] data]$ vi pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
host all postgres 192.168.137.0/24 md5
host all all ::1/128 md5
[postgres@hgdb01 data]$ psql -U postgres -W -h localhost -d testdb -p 1921
Password for user postgres: #此处必须是交互式输入密码
psql (9.5.7)
Type "help" for help.
testdb=# \q
这里的-u -p -d选项都可以省略,因为环境变量有所设置!
[[email protected] data]$ cat ~/.bash_profile
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
#add
export PGPORT=1921
export PGDATA=/pgdata/data
export LANG=en_US.utf8
export PGHOME=/usr/local/pgsql957
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export DATE=`date +"%Y%m%d%H%M"`
export PATH=$PGHOME/bin:$PATH:.
export MANPATH=$PGHOME/share/man:$MANPATH
export PGUSER=postgres
export PGHOST=$PGDATA
export PGDATABASE=testdb
alias rm='rm -i'
alias ll='ls -lh'
[postgres@hgdb01 data]$ psql -U postgres
Password for user postgres: #此处必须是交互式输入密码
psql (9.5.7)
Type "help" for help.
by 波罗