设置客户端连接PostgreSQL不需要密码

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

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

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

方法一:设置环境变量 PGPASSWORD 

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

--测试
[email protected]> export PGPASSWORD=mypassword               

[email protected]> 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                 

--连接测试
[email protected]> 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

[[email protected]]$ 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

--客户端再次连接测试
[email protected]> 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 上没有检查这个文件的权限。)

时间: 2024-08-01 00:58:43

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

外部客户端连接postgresql相关设置

修改服务配置文件postgresql.conf中的监听参数 默认配置文件在PGDATA目录下(除了你是通过服务进程中的参数config_file来指定的) [[email protected] data]$ vi postgresql.conf ...... listen_addresses = '*' # what IP address(es) to listen on; ...... 修改pg_hba.conf文件,添加一行host认证 默认配置文件在PGDATA目录中,可以通过服务配置文件

突破IIS的客户端连接限制

我们知道Windows 2000专业版或Windows XP专业版操作系统中IIS最多允许10个客户端的连接,在Windows 2000服务器版或Windows 2003服务器版操作系统中不存在这种连接限制问题. Microsoft提供了一个管理IIS的小工具MetaEdit,MetaEdit工作在Windows NT4.0.Windows 2000上,我发现它在Windows XP上也能正常工作,另外,MetaEdit只能管理II4.0.IIS5.0或更高版本的IIS. 下面利用这个工具突破W

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

众所周知,PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统),是一个可以免费使用的开放源代码数据库系统.本文详细介绍了PostgreSQL数据库服务端监听设置及客户端连接方法,具体如下: 一.背景介绍: 本文所述PostgreSQL服务端运行在RedHat Linux上,IP为:192.168.230.128客户端安装在Windows XP上, IP为:192.168.230.1 二.配置方法: 1.修改服务端/etc/postgresql/9.5/main/postgr

centos pptp 客户端连接vpn

vpn翻墙现在很普遍,无论是个人还是公司,都会用的到.对于个人实现很容易,直接购买一个云主机,现在的云主机都有这样的服务,购买后直接就可以使用.有的vpn对使用也有一定数量限制,如:只允许多少个客户端连接,但对于公司来说,根本无法满足. 所以经过摸索总于有了答案.通过跳转的方法实现,在云主机上搭建pptp vpn,再在公司内部找一台机器搭建shadowsocks,通过它可以实现智能翻墙,很方便,一个账号多人可以使用,vpn账号也很安全,在公司外是无法使用的.是不是很棒. 下面介绍公司内网机器vp

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

--================================= -- 配置ORACLE 客户端连接到数据库 --================================= Oracle 客户端连接到Oracle 数据库服务器貌似不同于SQL serve中的网络配置,其实不然,只不过所有的SQL server 运行于Windows平台,故很多配置直接集成到了操作系统之中.所以无需配置客户端即可连接到服务器.Oracle 客户端连接到数据库依赖于Oracle Net.Oracle提供

Ruby操作MongoDB(进阶)-创建数据库客户端连接

在Ruby的MongoDB2.4.3驱动版本中,通过创建一个Mongo::Client对象来构建一个Ruby的数据库连接.Mongo::Client构造器提供两种构造方式:一是通过提供主机列表和一些可选参数,另外还有通过一个连接URI.创建好的数据库连接默认连接到admin数据库. 1.使用Mongo::Client创建数据库客户端连接 1.1. 单服务器模式创建数据库连接 在单服务器模式下创建数据库连接,只需提供一个主机连接参数.另外,还可以通过消除自动发现步骤强制将集群拓扑转换为单机模式.可

存储学习之--StarWind虚拟存储配置和Linux客户端连接

存储学习之--StarWind虚拟存储配置和Linux客户端连接      在Windows 2008 Server上安装好StarWind后,就可以对它进行配置了 一.配置基本的StarWind 1.启动StarWind管理器 默认情况下,StarWind管理器放在任务栏的右下角 2.添加主机(如果是本机,输入127.0.0.1即可) 3.连接到主机 默认用户名为:root ,默认的密码为:starwind 4.接下来添加target 输入一个target名称 选择存储的介质类型,分别是硬盘,

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

转载自:http://blog.csdn.net/leshami/article/details/5917103 Oracle 客户端连接到Oracle 数据库服务器貌似不同于SQL serve中的网络配置,其实不然,只不过所有的SQL server 运行于Windows平台,故很多配置直接集成到了操作系统之中.所以无需配置客户端即可连接到服务器.Oracle 客户端连接到数据库依赖于Oracle Net.Oracle提供了很多基于客户端或服务器的配置工具,需要搞清的是Oracle Net 中的

阿里云-Redis-Help-连接实例-Redis客户端连接:.net客户端

ylbtech-阿里云-Redis-Help-连接实例-Redis客户端连接:.net客户端 1.返回顶部 1. .net客户端 操作步骤如下所示: 下载并使用.net客户端. git clone https://github.com/ServiceStack/ServiceStack.Redis 在.net 客户端中新建.net项目. 添加客户端引用,引用文件在库文件的ServiceStack.Redis/lib/tests中. 在新建的.net项目中输入如下代码来连接云数据库Redis.详细