4

私はPostreSQLを初めて使用します。私は午前中ずっと、ユーザー ログインが正しく機能するように努めてきましたが、今ではひどくイライラしています。

そのため、OpenGeo ソフトウェア スイートの一部として、バージョン 9.2 の PostGIS データベースを使用しています。私はpostgresユーザーでデータベースにアクセスできましたが、データベースにアクセスできるグループロールとユーザーを作成して、そのデータベースでテーブルを作成し、更新/選択/削除などを行えるようにしたいと考えています。

機能するユーザーを作成でき、そのユーザーでログインできます。グループの役割を作成し、その役割に特権を割り当てることができます。その後、ユーザーをグループの役割に追加すると、ログインできなくなります。

ユーザーpostgresをグループに追加すると、そのユーザーはログインできなくなりました。グループを削除しましたが、ログインできないままです。

今、私は pg_hba.conf でたくさん遊んできました。また、postgres としてログインできるようになりましたが、「信頼」が有効になっている場合に限り、PGAdminIII などのソフトウェアでログインできません。

何がうまくいかないのかについてアドバイスを得て、認証済みログインを再度有効にすることは素晴らしいことです.

pg_hba:

Code:
# Database administrative login by Unix domain socket
local   all             postgres                                trust
local all gisadmin trust

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all         opengeo                           md5
local   all         opengeo                           md5

# "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 gisadmin localhost trust


# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5

最後に、SSH トンネル経由でログインできるようにしたいと思います。もともと「postgres」ユーザーでそれを行うことができましたが、グループからそのユーザーを追加および削除したので、できなくなりました。

編集:エラーメッセージ...

正しいパスワードを使用して PGAdmin の SSH トンネル経由でログインすると、「FATAL: password authentication failed for the user ...」というエラーが表示されます。

PGAdmin でパスワードなしで SSH トンネル経由でログインしようとすると、信頼オプションが設定されているときに、「サーバーへの接続エラー: fe_sendauth: パスワードが指定されていません」というエラーが表示されます。

最初のエラーは、SSH と psql を介してローカルにログインするときに引き続き発生しますが、2 番目のエラーはなくなり、ログインできます。

\du+ の出力: ここに画像の説明を入力

\dg+ の出力 ここに画像の説明を入力

4

2 に答える 2

6

私は同様の問題を抱えており、pgAIIIを使用してpostgresとしてデータベースに接続し、ユーザープロパティの定義タブ、「有効期限」のチェックボックスを見るたびに見えるため、この動作はpgAdminIIIに関連している可能性があると思いますがチェックされ、1970 年 1 月 1 日または 1969 年 12 月 31 日が有効期限として設定されます。ダニエルが提案した解決策は機能するため、問題がパスワードの有効期限切れであることは明らかです。

変更ログで確認できるように、このバグは pgAdmin 1.16.2 で修正されたようです。

http://www.pgadmin.org/development/changelog.php

乾杯

于 2013-02-15T00:28:21.943 に答える
2

\du+出力では、Password valid until 1970-01-01 00:00:00+00...は非常に疑わしく見えます。厳密に言えば、 と のパスワードはgisadmin有効postgisrwpostgresはなくなったため、これらのアカウントでパスワード ベースの認証方法が失敗する理由を説明できる可能性があります。

これらのアカウントを試しALTER USER username valid until 'infinity'て、問題が解決するかどうかを確認してください。

また、SSH トンネル経由で PG に接続する場合、 でpg_hba.conf始まるエントリhostが無視されることに注意してください。これらのエントリは、Unix ドメイン ソケットへの接続に対してのみ考慮されます。ユーザーはそれを自分自身への接続と混同することがありますlocalhost

于 2013-01-23T18:53:04.100 に答える