3

次のような少しのコードでpsycopg2経由でpostgresサーバーに接続しようとすると(pythonを「ユーザー名」として実行):

psycopg2.connect(database="apis_master")

エラーが発生する

psycopg2.OperationalError: FATAL:  Ident authentication failed for user "username"

しかし、コマンドラインから(ユーザー「ユーザー名」として)psqlを直接実行すると、次のようになります。

psql -d apis_master

問題なくつながります。

これら 2 つの接続方法の違いがわかりません。psycopg2 の構成オプションが不足していますか?

4

2 に答える 2

2

コマンド ライン ユーザーと python ユーザー異なります。psycopg2 オブジェクトをインスタンス化するときは、ユーザー資格情報を渡します。

db = psycopg2.connect(
                     host = 192.168.0.1, # example IP, use 'localhost' if local, otherwise the IP of the server where Postgre is located.
                     database = 'apis_master'
                     user = 'my_db_user',
                     password = 'my_db_password'
                     )

これで接続の問題が解決するはずです。

于 2013-03-28T21:37:20.310 に答える
0

問題は、このシステムで 2 つの PGSQL インスタンスが実行されていたことです。1 つは 8.4 で、私のユーザー名と同じように構成されていませんでした。もう 1 つは 9.1 で、私のユーザー名を持っていました。psycopg2 がデフォルト ポートを使用している間、コマンド ライン psql は非標準ポートで実行されている 9.1 を自動的に選択していました。psycopg2 接続行でポートを指定すると、問題が修正されました。

于 2013-03-28T22:06:47.327 に答える