设置客户端连接PostgreSQL不需要密码
平常工作中,有时需要远端连接 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不需要密码的更多相关文章
- zookeeper设置客户端连接超时被expired
在网络环境非常差的情况下,使用zookeeper集群往往会遇到连接expired了: 客户端提示连接从ZOO_CONNECTION_STATE变为ZOO_EXPIRED_SEESION_STATE,然 ...
- PostgreSQL数据库服务端监听设置及客户端连接方法教程
众所周知,PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统),是一个可以免费使用的开放源代码数据库系统.本文详细介绍了PostgreSQL数据库服务端监听设置及客户端连接方法, ...
- Zookeeper命令行操作(常用命令;客户端连接;查看znode路径;创建节点;获取znode数据,查看节点内容,设置节点内容,删除节点;监听znode事件;telnet连接zookeeper)
8.1.常用命令 启动ZK服务 bin/zkServer.sh start 查看ZK服务状态 bin/zkServer.sh status 停止ZK服务 bin/zkServer.sh stop 重启 ...
- [redis]带密码的客户端连接方法
客户端连接方法: redis-cli -h localhost -p 6380 提供host为localhost,端口为6380 带密码的客户端连接方法一: redis-cli -h localh ...
- 设置MySQL客户端连接使用的字符集
设置MySQL客户端连接使用的字符集 时间:2014-03-05 来源:服务器之家 投稿:root 考虑什么是一个"连接":它是连接服务器时所作的事情.客户端发送SQL ...
- 【RabbitMQ】CentOS安装RabbitMQ,及简单的Java客户端连接
在CentOS安装 因Rabbit MQ使用Erlang,所以需要先安装Erlang,安装过程中可能会遇到种种问题,可参考CentOS 6.5安装Erlang/OTP 17.0.然后就可以安装MQ了. ...
- Mysql从客户端连接服务器连不上的问题
Mysql从客户端连接服务器连不上的问题 公司要用Mysql做一个测试,开始在自己的本地建一个Mysql数据库自己本地的程序再连上去,没有遇到过连接不上的问题.这次数据库在服务器上,从本地客户端连 ...
- 配置ORACLE 客户端连接到数据库
--================================= -- 配置ORACLE 客户端连接到数据库 --================================= Oracle ...
- redis基础操作~~数据备份与恢复、数据安全、性能测试、客户端连接、分区
数据备份与恢复 数据备份redis save 命令用于创建当前数据库的备份. redis 127.0.0.1:6379> SAVE OK 该命令将在 redis 安装目录中创建dump.rdb文 ...
随机推荐
- c# WinForm窗体编程中对窗体程序设置快捷键
c# WinForm窗体编程中对窗体程序设置快捷键http://www.cnblogs.com/bison1989/archive/2011/09/19/2180977.html /// <su ...
- AC日记——[Noi2011]阿狸的打字机 bzoj 2434
2434 思路: 构建ac自动机: 抽离fail树: 根据字符串建立主席树: 在线处理询问: 询问x在y中出现多少次,等同于y有多少字母的fail能走到x: 1a,hahahahah: 代码: #in ...
- AC日记——[FJOI2007]轮状病毒 bzoj 1002
1002 思路: 打表找规律: dp[i]=dp[i-1]*3-dp[i-2]+2; 套个高精就a了: 代码: #include <cstdio> #include <cstring ...
- java 连接带 kerberos 验证的 phoenix
唉,网上的资料比较少,找了好久,压根不知道如入告诉 phoenix 客户端来使用 kerberos 啊.. 然后就想到了,这东西开源的应该有相关的单元测试吧..啊哈哈哈哈哈哈,果然 https://g ...
- JS中对数组的操作方法
不断加入中.... 一.数组的增删 1.push():从后面追加 pop():从后面删除一个. 二.数组与字符串的转换 split():用分隔符生成数组 join():将数组用分隔符连为字符串. 三. ...
- Codeforces 538 C. Tourist's Notes
C. Tourist's Notes time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- 使用scrapy爬取金庸小说目录和章节url
刚接触使用scrapy的时候,如果一开始就想实现特别复杂的配置,显然是不太现实的,用一些小的例子可以帮助自己理解各个模块. 今天的目标:爬取http://www.luoxia.com/shendiao ...
- 树状数组【CF703D】Mishka and Interesting sum
Description 给你n( 1<=n<=1000000)个数,以及m(1<=m<=1000000)个询问,每个询问包括l和r,问你在这n个数中,区间l~r,出现偶数个数的 ...
- bzoj DZY Loves Math V
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 509 Solved: 284[Submit][Status][Discuss] Descriptio ...
- 【kmp算法】【Rabin-Karp算法】bzoj2462 [BeiJing2011]矩阵模板
算法就不说了,反正是基于字符串匹配的.这里比较一下kmp和Rabin-Karp算法. <法一>kmp算法. 592788 lizitong 2462 Accepted 4828 kb 68 ...