pgsql备份pgdump不输入密码备份

场景:通过linux的crontab定时执行shell脚本对数据库进行定时备份,但是通过命令行pgdump备份时,是需要手动敲入密码的,如何在不需要输入密码的情况下备份。
1、通过配置pg_hba.conf文件实现
增加一行:host all all 192.168.1.1/32 trust
192.168.1.1替换成自己备份服务器的ip即可。完成这个配置需要重启pgsql服务,这样192.168.1.1上发起的数据库连接就无需再输入密码。修改配置文件需要重启数据库服务。
具体各个参数意义,配置文件中有注解:
pgsql备份pgdump不输入密码备份_第1张图片
这个配置文件控制哪些主机允许连接数据库服务,以及客户端是如何认证授权的,哪一个用户名被使用,哪一个数据库被允许接入。
第一个字段是连接类型,可以是local,host,hostssl,hostnossl,hostgssenc,hostnogssenc。

local 这条记录匹配通过 Unix 域套接字进行的联接企图, 没有这种类型的记录,就不允许 Unix 域套接字的联接。
host 这条记录匹配通过TCP/IP网络进行的联接尝试。他既匹配通过ssl方式的连接,也匹配通过非ssl方式的连接。 注意:要使用该选项你要在postgresql.conf文件里设置listen_address选项,不在listen_address里的IP地址是无法匹配到的。因为默认的行为是只在localhost上监听本地连接。
hostssl 这条记录匹配通过在TCP/IP上进行的SSL联接企图。 要使用该选项,服务器编译时必须使用–with-openssl选项,并且在服务器启动时ssl设置是打开的,具体内容可见这里。
hostnossl 这个和上面的hostssl相反,只匹配通过在TCP/IP上进行的非SSL联接企图。

第二个字段是允许访问的数据库

指定这一记录匹配的数据库名。值all指定它匹配所有数据库。可以提供多个数据库名,用逗号分隔它们。在文件名前面放一个@,可以指定一个含有数据库名的单独的文件。
用户名
指定这一记录匹配的数据库角色名。值all指定它匹配所有角色。如果指定的角色是一个组并且希望该组中的所有成员都被包括在内,在该角色名前面放一个+。可以提供多个角色名,用逗号分隔它们。在文件名前面放一个@,可以指定一个含有角色名的单独的文件。

主机IP

指定这一记录匹配的客户端机器的IP地址范围。它包含一个标准点分十进制表示的IP地址和一个CIDR掩码长度。IP地址只能用数字指定,不能写成域或者主机名。掩码长度指示客户端IP地址必须匹配的高位位数。给定IP地址中,在这些位的右边必须是零。IP地址、/和CIDR掩码长度之间不能有任何空格。
典型的CIDR地址例子是:192.0.2.89/32是一个单一主机,192.0.2.0/24是一个小网络,10.6.0.0/16是一个大网络。要指定一个单一主机,对IPv4使用一个CIDR掩码32,对IPv6使用128。在一个网络地址中,不要省略拖尾的零。

ip地址(ip-address)、子网掩码(ip-mask) 这两个字段包含可以看成是标准点分十进制表示的 IP地址/掩码值的一个替代。
例如,使用255.255.255.0 代表一个24位的子网掩码。它们俩放在一起,声明了这条记录匹配的客户机的 IP
地址或者一个IP地址范围。本选项只能在连接方式是host,hostssl或者hostnossl的时候指定。

认证方法

常用的认证方法有:
trust 无条件地允许联接,这个方法允许任何可以与PostgreSQL 数据库联接的用户以他们期望的任意 PostgreSQL 数据库用户身份进行联接,而不需要口令。

reject 联接无条件拒绝,常用于从一个组中"过滤"某些主机。

md5 要求客户端提供一个 MD5 加密的口令进行认证,这个方法是允许加密口令存储在pg_shadow里的唯一的一个方法。

password 和"md5"一样,但是口令是以明文形式在网络上传递的,我们不应该在不安全的网络上使用这个方式。

(上面说的这些配置文件里面都有啊…实在是不想加这些内容的,但是发文助手检测说文章太短不给推流…o(╯□╰)o)
2、配置~/.papass
在~/目录下创建.pgpass文件,按照host:port:dbname:username:password格式输入数据库所在服务器ip,端口号,数据库名称,用户名,密码。可以多行配置多个数据库连接信息。如果还是不成功,再执行:chmod 0600 .pgpass更改文件权限。
(前提是该备份服务器ip已经按照1中的配置文件配置了允许访问数据库,认证方式为md5或者password)

你可能感兴趣的:(postgresql,服务器,数据库,运维,postgresql)