在不设置环境密码的情况下恢复PostgreSQL数据库
我需要写一个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命令而不输入密码