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


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

用psql命令连接远程的PostgreSql数据库时,在命令中不能传密码,只能连接后,再按照提弹出密码输入提示输入密码(这一点感觉很别扭,在Mysql上就可以在命令中传入密码),如果这样的话就涉及到和服务器的交互过程(或者称之为会话)。如下所示,输入命令后提示你输入密码:

eg:在 192.168.1.22  连接数据库 ZY-BigData, 弹出密码提示

[zhu@localhost ~]$ psql -h 192.168.8.22 -p 5432 -U postgresql -d ZY-BigData
Password for user postgresql:

要解决这种问题,可以由如下四种方法:

一、测试环境说明
PostgreSQL 数据库所在主机IP:  192.168.1.22、端口号:5432  待连接数据库名: ZY-BigData
客户端IP: 192.168.1.169

二、解决方法

方法一:设置环境变量 PGPASSWORD   

1.设置环境变量PGPASSWORD :

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

eg:

[zhu@localhost ~]$ export PGPASSWORD=123456
[zhu@localhost ~]$ psql -h 192.168.8.22 -p 5432 -U postgresql -d ZY-BigData
psql (9.3.2)
Type "help" for help.
ZY-BigData=# 

     注意:设置环境变量  PGPASSWORD ,连接数据库不再弹出密码输入提示。 但是从安全性方面考虑,这种方法并不推荐,

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

--创建密码文件 .pgpass ( on 客户端 )                               
vi /home/postgres/.pgpass       
                                     
--格式                                                               
hostname:port:database:username:password                             
                                                                     
--范例                                                               
192.168.1.22:5432:ZY-BigData:postgresql:123456
                                                                     
--设置权限                                                               
Chmod 600 .pgpass                  

      备注:在/home/postgres 目录创建了密码文件 .pgpass 文件后,并正确配置连接信息,那么客户端连接数据时会优先使用 .pgass文件, 并使用匹配记录的密码,从而不跳出密码输入提示,这种方法比方法一更安全,所以推荐使用创建 .pgpass 文件方式。                                

3.修改服务器端pg_hba.conf文件:                               

     修改认证文件 $PGDATA/pg_hba.conf, 添加以下行, 并 reload使配置立即生效。
host    ZY-BigData      postgresql         192.168.8.169/32           trust

reload使生效: pg_ctl reload -D $PGDATA

服务端 pg_hba.conf 的配置参考:
# IPv4 local connections:

host    all                      all                     0.0.0.0/32                      trust
host    all                      all                    127.0.0.1/32                   trust
host    ZY-BigData      postgresql         192.168.8.169/32           trust
host    all                      all                     0.0.0.0/0                         md5

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


如果你想修改 pg_hba.conf 和 postgresql.conf 文件以便连接 PostgreSQL 数据库客户端,可以按照以下步骤进行: 1. 修改 pg_hba.conf 配置文件 打开 pg_hba.conf 配置文件,修改以下内容: ``` # TYPE DATABASE USER ADDRESS METHOD local all all trust host all all 127.0.0.1/32 trust host all all ::1/128 trust ``` 将所有的认证方法(METHOD)都改为 `trust`,这样客户端连接 PostgreSQL 时就不需要输入用户名和密码了。当然,这种配置方式不够安全,建议生产环境下不要这样配置。 修改完毕后,记得保存并退出该文件。 2. 修改 postgresql.conf 配置文件 打开 postgresql.conf 配置文件,修改以下内容: ``` listen_addresses = '*' ``` 将 listen_addresses 参数的值改为 `*`,表示监听所有的 IP 地址。这样客户端就可以使用任何 IP 地址连接 PostgreSQL 数据库了。 修改完毕后,同样要保存并退出该文件。 3. 重启 PostgreSQL 服务 修改完这两个配置文件后,需要重启 PostgreSQL 服务才能生效。你可以使用以下命令重启 PostgreSQL 服务: ``` sudo systemctl restart postgresql ``` 修改完以上配置后,你就可以使用任何客户端连接PostgreSQL 数据库了。在连接时,你可以使用以下命令: ``` psql -h <server_ip> -U <username> -d <database_name> ``` 其中,`<server_ip>` 是 PostgreSQL 服务器的 IP 地址或主机名,`<username>` 是要连接PostgreSQL 用户名,`<database_name>` 是要连接PostgreSQL 数据库名称。根据你的实际情况进行修改。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值