linux非交互式连接数据库,【Postgres】客户端命令psql非交互式连接 PostgreSQL

一、实验背景

用psql客户端命令连接远程的PostgreSql数据库时,在命令中不能传密码,只能连接后,再按照提弹出密码输入提示输入密码(这一点感觉很别扭,在MySQL上就可以在命令中传入密码),如果这样的话就涉及到和服务器的交互(或者称之为会话),如果你要用shell脚本非交互式执行一些sql脚本,怎么办?

# psql -U postgres -p 5432  postgres

e90bd9abf7ec

二、实验环境

操作系统: CentOS7.5 Minimal

IP: 192.168.1.106

PostgreSQL版本: 9.5

# systemctl status postgresql-9.5

e90bd9abf7ec

# psql --help

e90bd9abf7ec

三、解决方法

方法一:设置环境变量 PGPASSWORD

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

#  export PGPASSWORD="Postgres@123"

# psql -h 192.168.1.106 -p 5432 -U postgresql -d postgres

e90bd9abf7ec

注意:设置环境变量  PGPASSWORD ,连接数据库不再弹出密码输入提示,从安全性方面考虑,这种方法并不推荐,使用完记得清楚操作历史

#  unset PGPASSWORD

# history  -c

e90bd9abf7ec

方法二:修改服务器端pg_hba.conf文件

修改认证文件 $PGDATA/pg_hba.conf, 添加以下行, 并 reload使配置立即生效。

# vim /var/lib/pgsql/9.5/data/pg_hba.conf

######################################################

host    postgres      postgresql         192.168.1.0/24           trust

#######################################################

#  pg_ctl reload -D $PGDATA

注:修改服务端 pg_hba.conf 并 reload 后,不再弹出密码输入提示。

方法三:在客户端设置.pgpass密码文件

e90bd9abf7ec

通过在客户端 /home/postgres 目录下创建隐藏文件 .pgpass ,从而避免连接数据库时弹出密码输入提示。

格式: hostname:port:database:username:password

#  mkdir  /home/postgres

# cp  -r /etc/skel/.    /home/postgres

# vim  /home/postgres/.pgpass

############################################

192.168.1.106:5432:postgres:postgres:Postgres@123

#############################################

e90bd9abf7ec

注:在/home/postgres 目录创建了密码文件 .pgpass 文件后,并正确配置连接信息,那么客户端连接数据时会优先使用 .pgass文件, 并使用匹配记录的密码,从而不跳出密码输入提示。

四、参考

PostgreSql命令行不输入密码的两种方法

https://blog.csdn.net/sunsides/article/details/84370134

用客户端命令psql连接 PostgreSQL 不输入密码的方法

https://blog.csdn.net/zhu_xun/article/details/23347869

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值