在不设置环境密码的情况下恢复PostgreSQL数据库

2 投票
1 回答
572 浏览
提问于 2025-04-18 02:06

我需要写一个Python脚本来调用 pg_restore 来恢复一个数据库。现在我用的是一个批处理文件,它会把真实的密码放在 PGPASSWORD 这个环境变量里,恢复完成后再把这个变量里的内容改成无意义的东西。

我的问题是,我必须用 SET PGPASSWORD='password' 来创建一个环境变量,但我不能把密码暴露在环境变量里,因为如果恢复过程中出错,PGPASSWORD 就会显示真实的密码。

有没有办法像在firebird中那样,把恢复命令和密码一起发送?

我在使用Windows XP/7/8,数据库是PostgreSQL 9.x。

1 个回答

2

我建议使用一个.pgpass 文件

在微软的Windows系统中,这个文件叫做 %APPDATA%\postgresql\pgpass.conf(其中 %APPDATA% 是指用户个人资料中的应用数据子目录)

可以设置一个环境变量,但你说得对,尽量避免这样做。手册上不推荐这样做

PGPASSWORD 的作用和密码连接参数一样。出于安全原因,不建议使用这个环境变量,因为某些操作系统允许非管理员用户通过ps命令查看进程的环境变量;所以建议使用 ~/.pgpass 文件

关于无密码访问的更多信息:
运行批处理文件时使用psql命令而不输入密码

撰写回答