一、概述
PostgreSQL数据库的连接,分本地连接和远程连接两种方式,本地连接使用socket套接字协议进行连接;在命令行中加上-h参数代表远程连接。
本地连接和远程连接是否需要指定用户密码,取决于基于主机认证配置文件pg_hba.conf的配置,你可以通过在postgresql数据库服务端的pg_hba.conf中添加一条trust条目,然后就可以实现无密码连接数据库,对于某些用户,这是不安全的。所以对于某些用户的连接,密码的指定是必不可少的一部分,出于安全的考虑,你也许不想在命令行中显示的指定用户密码,也不想每次连接时提示你输入用户密码,那么该如何通过其他方式指定用户密码呢?本文以远程连接为例分享三种指定命令的方法。
二、指定用户密码
1.测试环境准备
这里有两台机器:10.0.0.100(PostgreSQL服务器)、10.0.0.11(客户端)
创建测试用户并配置pg_hba.conf文件:
# 1.创建用户
postgres=# create user test password 'test123';
CREATE ROLE
# 2.配置pg_hba.conf
[postgres@alldb /opt/software/pg14/data]$ vim pg_hba.conf
host all test 10.0.0.11/32 md5
[postgres@alldb /opt/software/pg14/data]$ pg_ctl reload
server signaled
[postgres@alldb /opt/software/pg14/data]$ echo $PGDATA
/opt/software/pg14/data
2.使用环境变量PGPASSWORD指定密码
测试步骤如下:
未配置PGPASSWORD环境变量之前:
[postgres@PG1 ~]$ psql -U test -d postgres -h 10.0.0.100 -p 5432
Password for user test:
# 即使没有指定-W选项,也会提示你输入用户密码
配置环境变量:
[postgres@PG1 ~]$ export PGPASSWORD=test123
[postgres@PG1 ~]$ psql -U test -d postgres -h 10.0.0.100 -p 5432
psql (13.1, server 14.2)
# 连接时无需输入密码
3.使用.pgpass文件指定密码
# 1.取消环境变量PGPASSWORD的设置
[postgres@PG1 ~]$ unset PGPASSWORD
[postgres@PG1 ~]$ echo $PGPASSWORD
# 2.在用户家目录下,创建并编辑.pgpass文件
[postgres@PG1 ~]$ vim .pgpass
#hostname:port:database:username:password
10.0.0.100:5432:postgres:test:test123
[postgres@PG1 ~]$ chmod 0600 .pgpass
[postgres@PG1 ~]$ psql -U test -d postgres -h 10.0.0.100 -p 5432
psql (13.1, server 14.2)
WARNING: psql major version 13, server major version 14.
Some psql features might not work.
Type "help" for help.
postgres=> quit
4.使用服务文件.pg_service.conf指定密码
# 1.注释上一步的配置信息
[postgres@PG1 ~]$ vim .pgpass
#hostname:port:database:username:password
#10.0.0.100:5432:postgres:test:test123
# 2.在用户家目录下创建并编辑.pg_service.conf配置文件
[postgres@PG1 ~]$ vim .pg_service.conf
[zbservice]
host=10.0.0.100
port=5432
dbname=postgres
user=test
password=test123
# 3.配置环境变量PGSERVICE,并连接
[postgres@PG1 ~]$ export PGSERVICE=zbservice
[postgres@PG1 ~]$ psql
psql (13.1, server 14.2)
WARNING: psql major version 13, server major version 14.
Some psql features might not work.
Type "help" for help.
postgres=>
# 4.如果不配置PGSERVICE环境变量,可以使用如下方式连接:
[postgres@PG1 ~]$ unset PGSERVICE
[postgres@PG1 ~]$ echo $PGSERVICE
[postgres@PG1 ~]$ psql service=zbservice
psql (13.1, server 14.2)
WARNING: psql major version 13, server major version 14.
Some psql features might not work.
Type "help" for help.
postgres=>
使用这种方法,还可以简化命令,避免每次连接时输入很多选项。
最后修改时间:2023-08-01 19:05:57
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




