pgsql ident鉴权方式实现无密码登陆,无需.pgpass

PostgreSQL 命令行 psql,pg_dump等不支持口令参数,也就没法像mysql那样无需人工干预(输入口令)执行备份、恢复数据库的命令。html

网上搜索有多种解决办法,好比经过设置PostgreSQL的环境变量参数来实现保存密码,或者经过Expect 来实现自动交互,帮助输入密码,或者用.pgpass 来保存密码。 参考连接 http://bbs.chinaunix.net/thread-1760961-1-1.html mysql

这些方法都存在必定的安全隐患。其实pgsql在把安全性搞得如此高同时也提供了简单的解决办法,即pg_hba.conf中 ident鉴权验证方式sql

修改 pg_hba.conf 文件,添加到设置开始的第一位shell

local all all ident map=map1

并把已有的local行注释行为以下结果数据库

#local all all md5

而后编辑 pg_ident.conf,添加安全

map1 root postgres

而后重启pgsql服务或者reload,若是当前系统用户是root,则可这样直接直接登陆数据库ide

psql -Upostgres

其余具备sudo权限的用户也可这样免口令登陆post

sudo /usr/pgsql-9.1/bin/psql -Upostgre

 

注:pg_ident.conf 支持正则匹配
.net

参考文档:命令行

http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html

http://www.postgresql.org/docs/current/static/auth-username-maps.html

相关文章
相关标签/搜索