做门的网站网站的空间怎么查
如何免密使用PostgreSQL数据库内置工具
- 方法 1:使用 `.pgpass` 文件自动输入密码
- 步骤:
- 方法 2:使用环境变量 `PGPASSWORD`
- 步骤:
我们在PostgreSQL数据库自带的各种工具时,每次使用都要输入数据库密码。比如在使用
pg_dump备份数据库数据时,使用pg_restore恢复数据库数据时。或者是在使用pgbench工具测试数据库性能时,每跑一个用例都要输入一次数据库密码,这里我们通过配置的方式,以后再使用这些工具就不需要输入数据库密码了。
我们下面以使用 pg_restore 工具恢复数据为例进行演示。在使用 pg_restore 恢复数据时,如果需要在后台运行并输入密码,可以通过以下方法解决密码输入问题,同时将日志输出到文件中:
方法 1:使用 .pgpass 文件自动输入密码
PostgreSQL 支持通过 .pgpass 文件自动提供密码,避免手动输入。
步骤:
-
创建
.pgpass文件
在用户的主目录下创建.pgpass文件(如果不存在),并设置权限为 600(仅用户可读写)。我是使用root用户执行,所以直接在/root/目录下创建该文件。touch ~/.pgpass chmod 600 ~/.pgpass -
编辑
.pgpass文件
在.pgpass文件中添加以下内容:hostname:port:database:username:password例如:
localhost:5432:database_test:test_user:test_passwordhostname: 数据库主机;port: 数据库端口(PostgreSQL数据库默认是5432);database: 数据库名称;username: 数据库用户名;password: 数据库密码;
-
运行
pg_restore
使用nohup和重定向运行pg_restore,此时不需要手动输入密码:nohup pg_restore -U your_username -d database_name backup_file.dump > restore.log 2>&1 &
我在服务器上使用 root 用户成功执行该命令,不需要输入数据库密码。

方法 2:使用环境变量 PGPASSWORD
可以通过设置环境变量 PGPASSWORD 来提供密码。
步骤:
-
设置环境变量
在运行pg_restore之前,设置PGPASSWORD环境变量:export PGPASSWORD='your_password' -
运行
pg_restore
使用nohup和重定向运行pg_restore:nohup pg_restore -U your_username -d your_database_name your_backup_file.dump > restore.log 2>&1 &PS:这种方法会将密码暴露在命令行历史中,可能存在安全风险。
