在 Shell 命令行中,使用 postgresql-client 连接 PostgreSQL 数据库时,每次都要输入密码。如果要写 Shell Script,做一些类似于备份的自动化管理工作,每次都还要手动输入密码是一件让人很不爽的事情,也没有实现真正意义上的自动化。

何如在连接 PostgreSQL 数据库时,不用手动输入密码,官方利用密码文件(Password File)提供了一种解决方案:

Unix/Linux 在用户家目录创建一个 .pgpass 隐藏文件或者是创建一个环境变量 PGPASSFILE 引用一个含有密码信息的文件(文件内容同 .pgpass 文件,此处文件名可随意,隐不隐藏都行),Windows 对应的是 %APPDATA%\postgresql\pgpass.conf 文件( %APPDATA% 是用户配置里面的 Application Data 子目录)。

该文件记录着连接数据库需要的所有信息,按下面数据格式,每行一条记录信息:

hostname:port:database:username:password

该文件中可以有注释内容,注释符号是 # 。

前四个字段可以是确定的字面值,也可以使用通配符 * 匹配所有。

连接数据库的时候,系统自动从前到后遍历该文件,使用最先匹配到的记录,因此,当你在文件中使用了通配符 * 的时候,应该优先把最具体的信息放在文件的最前面。

如果记录信息中包含 : 或 \ 这两个符号,需要对其进行转义,就是在字符前面加转义符号 \ 。

在 Unix/Linux 系统中 .pgpass 文件权限只能对用户自己开放,不能对用户组和其他人开放,就是说 .pgpass 文件对用户组和其他人是"不可读,不可写,不可执行"的,通常会赋予 .pgpass 文件权限 600 ,命令如下:

chmod  ~/.pgpass

如果任何一个权限对用户组或其他人开放了,该文件就会被忽略。

利用环境变量 PGPASSFILE 引用的文件权限也要满足这个要求,否则同样会被忽略。

在 Windows 中,会假设该文件存放在一个安全的目录中,所有没有对其权限进行特别的检查。

至此,数据库对应的 .pgpass 文件设置完成,以后再连接数据库就不需要手动输入密码了,Shell Script 也能够实现真正意义上的自动化管理。

psql -h 10.150.10.150 -p  -U postgres -d dbname  -- 到.pgpass文件中寻找匹配信息,如果没有,依然需要手动输入密码

PostgreSQL 自动输入密码的更多相关文章

  1. PostgreSQL 自动输入密码(转)

    原文:https://www.cnblogs.com/litmmp/p/5122534.html 在 Shell 命令行中,使用 postgresql-client 连接 PostgreSQL 数据库 ...

  2. ssh自动输入密码脚本 切换目录脚本

    利用expect的,首先查看expect,命令:which expect #!/usr/bin/expect -f spawn ssh 用户名@ip地址 expect "assword:&q ...

  3. Linux中shell脚本自动输入密码

    最近遇到蛋疼的事,就是在shell脚本中需要获取root权限,因此在shell脚本运行过程中需要输入密码. 懒惰的我当然想让shell在执行过程中就可以自动输入密码,这样就可以抽空看看妹子图.. 我通 ...

  4. 再也不必当心我的密码了,多个SAP 客户端自动输入密码

    再也不必当心我的密码了,多个SAP 客户端自动输入密码问题: 通常对于OFFICE人员来说,一天有很多的密码,OA密码,多个ERP密码,邮箱密码,代理密码等等,还经常60天过期之类,实在是焦头烂额. ...

  5. shell如何自动输入密码

    shell如何自动输入密码 http://linux.ctocio.com.cn/171/12162171.shtml

  6. Shell结合Expect实现自动输入密码

    Shell结合Expect自动输入密码示例 #!/bin/bash cd /data/live /usr/bin/expect <<-EOF spawn git clone "s ...

  7. Shell脚本交互之:自动输入密码

    Shell脚本交互之:自动输入密码 2016年04月09日 19:41:26 zhangjikuan 阅读数:58208 标签: Shell交互自动输入密码expect重定向管道 更多 个人分类: A ...

  8. 通过expect免自动输入密码登陆远程服务器

    通过expect免自动输入密码登陆远程服务器 1.前提必须已经安装expect 2.新建login.sh,文件内容如下 #!/usr/bin/expect -f spawn ssh root@140. ...

  9. pseudo tty破除无法自动输入密码的限制

    没有root权限,没有ssh密钥对,又想自动输入密码咋办? #!/usr/bin/python # simplest builtin python pseudo-tty for ssh passwor ...

随机推荐

  1. 对TextFile格式文件的lzo压缩建立index索引

    转自:http://blog.csdn.net/yangbutao/article/details/8519572 hadoop中可以对文件进行压缩,可以采用gzip.lzo.snappy等压缩算法. ...

  2. 【转】搭建Java版WebService

    原文地址:http://www.cnblogs.com/jasoncc/archive/2011/12/22/2296052.html Hi,大家好! 今天主要和大家分享,如何搭建一个Web服务,做A ...

  3. [Installing Metasploit Framework on CentOS_RHEL 6]在CentOS_RHEL 6上安装Metasploit的框架【翻译】

    [Installing Metasploit Framework on CentOS_RHEL 6]在CentOS_RHEL 6上安装Metasploit的框架[翻译] 标记声明:蓝色汉子为翻译上段英 ...

  4. Eclipse使用心得与技巧

    一. 常用快捷键(熟练使用快捷键可以充分提高编程效率,吐血整理...) 1,Alt + ↑上方向键:向上移动选中的代码,你可以把一行或者一段代码直接上移几行 2,Alt + ↓下方向键:向下移动选中的 ...

  5. java-信息安全(十三)-数字签名,代码签名【Java证书体系实现】

    概述 信息安全基本概念 前置 java-信息安全(十二)-数字签名[Java证书体系实现] 过程 通过工具JarSigner可以完成代码签名.  这里我们对tools.jar做代码签名,命令如下: 进 ...

  6. java+Quartz实现定时任务

    1.首先:导入quartz相关的jar包,这里我用的是maven构建的项目,pom.xml文件导入如下: <dependency> <groupId>org.quartz-sc ...

  7. iOS中 支付宝钱包具体解释/第三方支付 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博! iOS开发人员交流QQ群: 446310206 一.在app中成功完毕支付宝支付的过程 1.申请支付宝钱包.參考网 ...

  8. 08策略模式Strategy

    一.什么是策略模式 Strategy模式也叫策略模式是行为模式之一, 它对一系列的算法加以封装,为所有算法定义一 个抽象的算法接口,并通过继承该抽象算法接口 对所有的算法加以封装和实现,具体的算法选择 ...

  9. offsetHeight,clientHeight,scrollHeight,offsetY等属性的理解

    el.offsetHeight = height + padding + border(滚动条是在边框内的,自然也包括在内) el.clientHeight = 可视化看到的高度 (就是content ...

  10. 【ArcGIS】栅格分析-问题之001(转)

    在arcgis中进行栅格计算时,碰到这样的错误ERROR 000539:Error running expression:rcexec()<type 'exceptions.ValueError ...