PostgreSQL 自动输入密码(转)
原文:https://www.cnblogs.com/litmmp/p/5122534.html
在 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 0600 ~/.pgpass
如果任何一个权限对用户组或其他人开放了,该文件就会被忽略。
利用环境变量 PGPASSFILE 引用的文件权限也要满足这个要求,否则同样会被忽略。
在 Windows 中,会假设该文件存放在一个安全的目录中,所有没有对其权限进行特别的检查。
至此,数据库对应的 .pgpass 文件设置完成,以后再连接数据库就不需要手动输入密码了,Shell Script 也能够实现真正意义上的自动化管理。
psql -h 10.150.10.150 -p 5432 -U postgres -d dbname -- 到.pgpass文件中寻找匹配信息,如果没有,依然需要手动输入密码
PostgreSQL 自动输入密码(转)的更多相关文章
- PostgreSQL 自动输入密码
在 Shell 命令行中,使用 postgresql-client 连接 PostgreSQL 数据库时,每次都要输入密码.如果要写 Shell Script,做一些类似于备份的自动化管理工作,每次都 ...
- ssh自动输入密码脚本 切换目录脚本
利用expect的,首先查看expect,命令:which expect #!/usr/bin/expect -f spawn ssh 用户名@ip地址 expect "assword:&q ...
- Linux中shell脚本自动输入密码
最近遇到蛋疼的事,就是在shell脚本中需要获取root权限,因此在shell脚本运行过程中需要输入密码. 懒惰的我当然想让shell在执行过程中就可以自动输入密码,这样就可以抽空看看妹子图.. 我通 ...
- 再也不必当心我的密码了,多个SAP 客户端自动输入密码
再也不必当心我的密码了,多个SAP 客户端自动输入密码问题: 通常对于OFFICE人员来说,一天有很多的密码,OA密码,多个ERP密码,邮箱密码,代理密码等等,还经常60天过期之类,实在是焦头烂额. ...
- shell如何自动输入密码
shell如何自动输入密码 http://linux.ctocio.com.cn/171/12162171.shtml
- Shell结合Expect实现自动输入密码
Shell结合Expect自动输入密码示例 #!/bin/bash cd /data/live /usr/bin/expect <<-EOF spawn git clone "s ...
- Shell脚本交互之:自动输入密码
Shell脚本交互之:自动输入密码 2016年04月09日 19:41:26 zhangjikuan 阅读数:58208 标签: Shell交互自动输入密码expect重定向管道 更多 个人分类: A ...
- 通过expect免自动输入密码登陆远程服务器
通过expect免自动输入密码登陆远程服务器 1.前提必须已经安装expect 2.新建login.sh,文件内容如下 #!/usr/bin/expect -f spawn ssh root@140. ...
- pseudo tty破除无法自动输入密码的限制
没有root权限,没有ssh密钥对,又想自动输入密码咋办? #!/usr/bin/python # simplest builtin python pseudo-tty for ssh passwor ...
随机推荐
- mysql存储过程详解 mysql存储过程和函数
第20章:存储程序和函数 目录 20.1. 存储程序和授权表 20.2. 存储程序的语法 20.2.1. CREATE PROCEDURE和CREATE FUNCTION 20.2.2. ALTER ...
- mysql灾备演练问题
前期写的mysql热备份脚本恢复,还没有正式用到过,但是今天演练灾备恢复,但是遇到几个问题. 测试环境: 搭建mysql,安装xtrabackup vim /etc/yum.repos.d/Perco ...
- 基于μC/OS—III的CC1120驱动程序设计
基于μC/OS—III的CC1120驱动程序设计 时间:2014-01-21 来源:电子设计工程 作者:张绍游,张贻雄,石江宏 关键字:CC1120 嵌入式操作系统 STM32F103ZE ...
- halcon之NCC匹配
NCC匹配 基于Normalized cross correlation(NCC)用来比较两幅图像的相似程度已经是一个常见的图像处理手段.在工业生产环节检测.监控领域对对象检测与识别均有应用.NCC算 ...
- HTTP 04 web 服务器
用单台虚拟主机实现多个域名 HTTP/1.1 允许一台 HTTP 服务器搭建多个 web 站点, 例如提供 web 托管服务的供应商, 可以用一台服务器为多位客户服务, 也可以以每位客户持有的域名运行 ...
- Linux的rp_filter与策略路由
Linux的rp_filter用于实现反向过滤技术,也即uRPF,它验证反向数据包的流向,以避免伪装IP攻击,但是它和Linux的策略路由却很容易发生冲突,其本质原因在于,uRPF技术强制规定了一个反 ...
- dedecms模板中 if else怎么写
在制作dedecms模板时,有时需要使用IF ELSE判断语句,但是dedecms模板中是无法使用使用IF语句的,否则会报错. 那么如何在dedecms模板中使用 if else呢?这就需要我们多走 ...
- Elasticsearch学习之有用博客
推荐阅读:1.阿里:https://elasticsearch.cn/article/61712.滴滴:http://t.cn/EUNLkNU3.腾讯:http://t.cn/E4y9ylL4.携程: ...
- 关于vb编程之字符串连接/拼接的方法与技巧
在VB中,笔者知道的字符串的拼接方法主要有两种拼接符号,一种为"&"符,另一种则为"+"符 一.其中&连接运算符用于强制将两个表达式作为字符串连 ...
- JavaSE 可变参数的方法重载
/** * 可变参数的方法重载 */ class A { public void test(int a, int b) { System.out.println(a+", "+b) ...