我需要编写一个脚本来备份我的 psql 数据库,我想使用 wal 存档模式而不是 pg_dump。我根据在网上找到的一个脚本编写了此脚本:
#!/bin/bash
#Test Script BackupSQL
PG_SQL_CMD=/opt/novell/idm/Postgres/bin/psql
PG_SQL_USER=postgres
PG_SQL_DB=password
PG_SQL_HOST=localhost
PG_BACKUP_LABEL='backup_label'
PG_BACKUP_START="$PG_SQL_CMD -U $PG_SQL_USER -h $PG_SQL_HOST -c \"select pg_start_backup('$PG_BACKUP_LABEL')\""
PG_BACKUP_STOP="$PG_SQL_CMD -U $PG_SQL_USER -h $PG_SQL_HOST -c \"select pg_stop_backup()\""
echo $PG_BACKUP_START
eval $PG_BACKUP_START
sleep 2
echo $PG_BACKUP_STOP
eval $PG_BACKUP_STOP
我的问题是:运行脚本时,它提示我输入 psql 密码。我没有找到在 psql 命令中指定密码的方法,就像在 mysql 中使用 -p 选项一样。
我怎样才能让脚本回答提示?
答案1
尝试使用该.pgpass
文件而不必输入密码。
请参阅:http://www.postgresql.org/docs/8.3/static/libpq-pgpass.html
或者你可以使用如下的 shell 语法:
psql -h database.server.com -U username <<EOF
sekritpassword
EOF
或者作为最后的选择,您应该能够使用环境变量 PGUSER 和 PGPASSWD。
答案2
如果您的 pg_hba.conf 文件中有以下行,则无需提供密码。您只需以 postgres 用户身份运行此命令。
local all all ident