平常工作中,有时需要远端连接 PostgreSQL 数据库做些维护,例如远端备份等;如果备份脚本写在远端机器,备份的时候会弹出密码输入提示,那么脚本就不能后台执行,这里总结了几种不弹出密码输入提示的方法。

--测试环境
目标库IP:  192.168.1.25/5432 ; 数据库: Mydb ;用户名:postgres
客户端IP:  192.168.1.26

--在 192.168.1.26  连接数据库 Mydb , 弹出密码提示
postgres@linux-> psql -h 192.168.1.25 -p 5432 Mydb postgres
Password for user postgres:

方法一:设置环境变量 PGPASSWORD 

PGPASSWORD  是 PostgreSQL 系统环境变量,在客户端设置这后,那么在客户端连接远端数据库时,将优先使用这个密码。

--测试
postgres@linux-> export PGPASSWORD=mypassword               

postgres@linux-> psql -h 192.168.1.25 -p 5432 Mydb postgres
psql (8.4.4)
Type "help" for help.                          
Mydb=> \q            

     备注:设置环境变量  PGPASSWORD ,连接数据库不再弹出密码输入提示。 但是从安全性方面考虑,这种方法并不推荐。

方法二:设置 .pgpass 密码文件

通过在客户端 /home/postgres 目录下创建隐藏文件 .pgpass ,从而避免连接数据库时弹出密码输入提示。

--创建密码文件 .pgpass ( on 客户端 )     
vi /home/postgres/.pgpass       
--格式    
hostname:port:database:username:password                             
--范例    
192.168.1.25:5432:Mydb:postgres:mypassword                                   
--权限          
Chmod 600 .pgpass                 

--连接测试
postgres@linux-> psql -h 192.168.1.25 -p 5432 Mydb postgres

psql (8.4.4)
Type "help" for help.                          
Mydb=>

备注:在/home/postgres 目录创建了密码文件 .pgpass 文件后,并正确配置连接信息,那么客户端连接数据时会优先使用 .pgass文件, 并使用匹配记录的密码,从而不跳出密码输入提示,这种方法比方法一更安全,所以推荐使用创建 .pgpass 文件方式。               

方法三:修改服务器端 pg_hba.conf

修改认证文件 $PGDATA/pg_hba.conf, 添加以下行, 并 reload使配置立即生效。
host    Mydb         postgres            192.168.0.0/24           trust

[postgres@linux]$ pg_ctl reload -D $PGDATA / service postgresql reload
server signaled

--服务器端 pg_hba.conf 的配置
# IPv4 local connections:
host    all             all                 127.0.0.1/32               trust
host    Mydb        postgres       192.168.0.0/24           trust
host    all             all                  0.0.0.0/0                    md5

--客户端再次连接测试
postgres@linux-> psql -h 192.168.1.25 -p 5432 Mydb postgres

psql (8.4.4)
Type "help" for help.   

Mydb=> \q

备注:修改服务端 pg_hba.conf 并 reload 后,不再弹出密码输入提示。

引用官方说明文档:

用户家目录中的 .pgpass 或者 PGPASSFILE 引用的文件是一个可包含口令的文件。如果连接要求口令(并且没有用其它方法声明口令),那么可以用它。在 Microsoft Windows 上,文件名字是 %APPDATA%\postgresql\pgpass.conf (这里的 %APPDATA% 指用户配置里的 Application Data 子目录)。

这个文件应该有下面这样的格式行:

hostname:port:database:username:password

头四个字段每个都可以是一个文本值,或者 *,它匹配所有的东西。第一个匹配当前连接参数的口令行的口令域将得以使用。(因此,如果你使用了通配符,那么应该把最具体的记录放在前面。)如果记录包含 : 或者 \ ,应该用 \ 逃逸。一个 localhost 的主机名匹配来自本机的 host(TCP)和 local (Unix 域套接字)。

.pgpass 的权限必须不允许任何全局或者同组的用户访问;我们可以用命令 chmod 0600 ~/.pgpass 实现这个目的。如果权限比这个松,这个文件将被忽略。(不过目前在 Microsoft Windows 上没有检查这个文件的权限。)

设置客户端连接PostgreSQL不需要密码的更多相关文章

  1. zookeeper设置客户端连接超时被expired

    在网络环境非常差的情况下,使用zookeeper集群往往会遇到连接expired了: 客户端提示连接从ZOO_CONNECTION_STATE变为ZOO_EXPIRED_SEESION_STATE,然 ...

  2. PostgreSQL数据库服务端监听设置及客户端连接方法教程

    众所周知,PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统),是一个可以免费使用的开放源代码数据库系统.本文详细介绍了PostgreSQL数据库服务端监听设置及客户端连接方法, ...

  3. Zookeeper命令行操作(常用命令;客户端连接;查看znode路径;创建节点;获取znode数据,查看节点内容,设置节点内容,删除节点;监听znode事件;telnet连接zookeeper)

    8.1.常用命令 启动ZK服务 bin/zkServer.sh start 查看ZK服务状态 bin/zkServer.sh status 停止ZK服务 bin/zkServer.sh stop 重启 ...

  4. [redis]带密码的客户端连接方法

    客户端连接方法: redis-cli -h localhost -p 6380 提供host为localhost,端口为6380   带密码的客户端连接方法一: redis-cli -h localh ...

  5. 设置MySQL客户端连接使用的字符集

    设置MySQL客户端连接使用的字符集 时间:2014-03-05    来源:服务器之家    投稿:root 考虑什么是一个"连接":它是连接服务器时所作的事情.客户端发送SQL ...

  6. 【RabbitMQ】CentOS安装RabbitMQ,及简单的Java客户端连接

    在CentOS安装 因Rabbit MQ使用Erlang,所以需要先安装Erlang,安装过程中可能会遇到种种问题,可参考CentOS 6.5安装Erlang/OTP 17.0.然后就可以安装MQ了. ...

  7. Mysql从客户端连接服务器连不上的问题

    Mysql从客户端连接服务器连不上的问题   公司要用Mysql做一个测试,开始在自己的本地建一个Mysql数据库自己本地的程序再连上去,没有遇到过连接不上的问题.这次数据库在服务器上,从本地客户端连 ...

  8. 配置ORACLE 客户端连接到数据库

    --================================= -- 配置ORACLE 客户端连接到数据库 --================================= Oracle ...

  9. redis基础操作~~数据备份与恢复、数据安全、性能测试、客户端连接、分区

    数据备份与恢复 数据备份redis save 命令用于创建当前数据库的备份. redis 127.0.0.1:6379> SAVE OK 该命令将在 redis 安装目录中创建dump.rdb文 ...

随机推荐

  1. Django基础之路由系统

    Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. ...

  2. owasp zap 安全审计工具 安装/拦截请求

    1.安装 网址:https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project 步骤:安装包正常安装即可 2.使用: 来自:http:// ...

  3. EasyUI----DataGrid行明细增删改操作

    http://blog.csdn.net/huchiwei/article/details/7787947   本文实现的是EasyUI-DataGrid行明细的增删改操作.具体参考来自以下文章: 官 ...

  4. Codeforces 811 B. Vladik and Complicated Book

    B. Vladik and Complicated Book   time limit per test 2 seconds memory limit per test 256 megabytes i ...

  5. dart Stream

  6. (5)python 字符串和输入输出

    一.字符串转义 字符串可以包含任何字符可以用单引号也可以用双引号 a='hello' a="hello" 如果字符串中存在单引号,可以用双引号里包含单引号的方式 a="I ...

  7. 洛谷——P3914 染色计数

    P3914 染色计数 题目描述 有一颗NN个节点的树,节点用1,2,\cdots,N1,2,⋯,N编号.你要给它染色,使得相邻节点的颜色不同.有MM种颜色,用1,2,\cdots,M1,2,⋯,M编号 ...

  8. 安装redis扩展

    1.安装redis模块 wget https://codeload.github.com/phpredis/phpredis/zip/php7 unzip php7 cd phpredis-php7/ ...

  9. 【BZOJ 2333 】[SCOI2011]棘手的操作(离线+线段树|可并堆-左偏树)

    2333: [SCOI2011]棘手的操作 Description 有N个节点,标号从1到N,这N个节点一开始相互不连通.第i个节点的初始权值为a[i],接下来有如下一些操作: U x y: 加一条边 ...

  10. 【记忆化搜索】bzoj1048 [HAOI2007]分割矩阵

    标准差=√(Σ(xi-xba)2/n)=Σ(xi)2+xba*n-2*xba*sum.只需最小化每个分割出来的矩阵的平方和即可. #include<cstdio> #include< ...