前提:我们拥有一个远程PostgreSQL数据库的访问权限。 当我们在本地使用psql连接时,每次都需要提供密码,才可以继续操作,我想,可能会有人和我的想法一样,有点麻烦,有没有什么方便的方式来连接我们已拥有权限的PG呢?

以下我们来介绍两种方法为非交互式地为PostgreSQL的交互式终端psql命令提供密码, 每种方法都允许使用基于终端的PostgreSQL实用程序轻松编写shell脚本,因为您可以从密码文件或环境变量中提供用户凭据。

1. 使用密码文件提供密码

要使用此方法,请在主目录中创建~/.pgpass文件并限制其权限,以便实用程序不会忽略它。

$ touch ~/.pgpass
$ chmod 0600 ~/.pgpass

然后使用以下结构定义用户凭据。

server:port:database:username:password

需要注意的是,密码以外的每个字段都可以替换为星号以匹配任何内容,其他所有字段都是自解释的,以下是一些示例配置。

localhost:5432:encore:db1:password123
10.0.0.23:5432:user1:testdb:iskhushnjxuDJS
10.0.0.224:*:*:development:SXKXJsssses12

现在,作为具有已定义的PostgreSQL密码文件的用户,您可以使用PostgreSQL实用程序而无需密码提示来执行所需的任务。

psql -U encore -d db1 -c "SELECT * FROM users"
psql -h 10.0.0.23 -U user1 -d testdb -c "SELECT * FROM users"

2.使用环境变量提供密码

您可以定义PGHOST,PGPORT,PGDATABASE,PGUSER和PGPASSWORD环境变量,而不是使用密码文件。

$ PGHOST=10.0.0.23 PGUSER=user1 PGPASSWORD=iskhushnjxuDJS psql testdb -c "SELECT * FROM users"

PostgreSQL 参考文献