postgreSQLが機能しない.pgpass


13

/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

回答:


8

pgpassファイルはモード0600に設定されていますか(所有者のみが読み取り/書き込み可能)?クライアントライブラリは、グループまたは世界が読み取り可能な場合は無視します。


5

私の構成(Ubuntu 10.04.3およびPostgreSQL 8.4)では、ログインしているユーザー名が.pgpassファイルからパスワードを取得しようとしているユーザー名と同じである場合、ようやく機能するようになりました。

としてログインしdeployer.pgpassファイルを使用してユーザー名が所有するデータベースにアクセスしようとしましappnameたが、これには同等のUnixユーザーはいません。データベースにアクセスするユーザーとして.pgpass使用を開始するまで、私は仕事をすることができませんでしたdeployer...

ここに私のある/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

2
あなたは使用して接続するにはPGユーザを制御することができます-Uにフラグをdropdbしてcreatedb
ケビン・ホーン

0

1)コンテンツを含む.pgpassファイルを作成する

host:5432:somedb:someuser:somepass

2)コマンドを使用して権限を設定します

sudo chmod 600 .pgpass

3)ファイルの所有者を、ログインに使用したのと同じユーザーとして設定します。

sudo chown login_username:login_username .pgpass

4)PGPASSFILE環境変数を設定します。

export PGPASSFILE = '/ home / user / .pgpass'

データベースに接続して確認してください:

psql -h host -U someuser somedb

パスワードの入力を求めず、postgresqlにログインしません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.