/folder/.pgpassに.pgpassファイルを配置しました。
*:*:*:postgres:password_for_postgres
PostgreSQLからデータベースをバックアップするbashスクリプトがあります。
#!/bin/bash
export PGPASSFILE=/folder/.pgpass
echo $PGPASSFILE
pg_dump --username=postgres --format=c --file=/backup/db/db.sqlc database
しかし、スクリプトはまだパスワードを要求します。 PGPASSFILEは、私が見る限り、必要な値を持っています。問題の可能性に関するヒントはありますか?
/ K
Pgpassファイルはモード0600に設定されていますか(つまり、所有者のみが読み書きできる)?クライアントライブラリは、グループまたは全世界で読み取り可能な場合は無視します。
私の構成(Ubuntu 10.04.3
およびPostgreSQL 8.4
)では、-ログインしているユーザー名が、パスワードを取得しようとしているユーザー名と同じ場合、最終的に機能させることができます.pgpass
ファイル。
deployer
としてログインし、.pgpass
ファイルを使用して、同等のUnixユーザーがいないユーザー名appname
が所有するデータベースにアクセスしようとしました。データベースにアクセスするユーザーとしてdeployer
を使い始めるまで、.pgpass
を機能させることができませんでした...
これが私の/home/deployer/.pgpass
ファイルの内容です。
*:*:*:deployer:password
/etc/postgresql/8.4/main/pg_hba.conf
の一部:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
Host all all 127.0.0.1/32 md5
Host all all 192.168.0.1/32 md5
# IPv6 local connections:
Host all all ::1/128 md5
ご覧のとおり、すべての接続にはパスワード(md5
)が必要です。
この構成では、次のコマンドで作成したデータベースがあると想定しています。
deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname
パスワードを入力せずに次の操作を実行できます。
deployer@ubuntu-server:~$ dropdb dbname
.pgpass
の名前を.pgpass-no
に変更するとすぐに、パスワードが必要になります。
ところで、あなたの.pgpass
ファイルは0600
権限の下になければならないことを忘れないでください:
deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass
1)内容を含む.pgpassファイルを作成する
ホスト:5432:somedb:someuser:somepass
2)コマンドを使用して権限を設定する
Sudo chmod 600 .pgpass
3)ファイル所有者を、ログインに使用したのと同じユーザーとして設定します。
Sudo chown login_username:login_username .pgpass
4)PGPASSFILE環境変数を設定します。
pGPASSFILE = '/ home/user/.pgpass'をエクスポートします
次に、データベースに接続して確認します。
psql -hホスト-U someuser somedb
パスワードの入力を求めず、postgresqlにログインしません。