记录一下自己在远端操作Postgresql数据库遇到的问题和解决方法。(Linux下)
这篇主要提供给可能跟我遇到同样问题的朋友,就是在按照网上查询的方法配置了.pgpass文件但是发现没有生效。
项目中有一个需求,需要用到shell脚本去调用pg函数,可是在每次运行脚本的时候都需要输入password。这里需要跳过这个密码验证,然后在官方找到了解决办法,在服务中找到postgresql的路径,以我自己的为例(cd /opt/PostgreSQL/),也可以 su -postgres 跳转过来,在此路径下创建一个.pgpass文件(vi /opt/PostgreSQL/.pgpass),按I进入编辑模式。
输入文件的格式:
hostname:port:database:username:password
根据官方文档说明,前面4个可以用*。附上格式:
保存以后需要对这个文件进行一下权限设置附上命令行:
chmod 0600 /opt/PostgreSQL.pgpass
后面就可以先连接数据库测试一下:
备注:创建了密码文件 .pgpass 文件后,并正确配置连接信息,那么客户端连接数据时会优先使用 .pgass文件, 并使用匹配记录的密码,从而不跳出密码输入提示,这种方法比方法一更安全,所以推荐使用创建 .pgpass 文件方式。
按道理说会跟上面备注产生一样的结果,发现并不是这样,还是需要输入密码,然后我就开始查看自己的格式,权限,然而并没有看出来什么问题,失败了N多次之后准备舍弃掉这个方法的时候,想到是不是这个文件压根就没有执行。遂开始再次寻找问题。最后解决方案是在使用之前先进行一次密码验证。在使用需要密码的文件的时候先执行下面命令:
export PGPASSFILE=/文件路径/.pgpass (我这边便是export PGPASSFILE=/opt/PostgreSQL/.pgpass)
然后在链接数据库测试(如上图)
便可以直接链接上了。
在shell脚本中这句话就在你执行函数前面运行就好了!!!
这种并不是网上主流的解决办法,可是不知道为什么配置好了.pgpass文件之后还是不行,如果有大佬碰见同样的问题并且有解决方案,希望留言一起探讨,感谢???