4

私は postgres を使用するのが初めてで、root アクセス権のない Web サーバーで実行されているデータベースにアクセスしようとしています。

trust私の問題は、すべてのユーザーとデータベースに対して認証が設定されているにもかかわらず、データベースとやり取りしたりデータベースにアクセスしたりするときに、常にパスワードを求められることです。

ホーム ディレクトリにソースから postgres 9.2 をインストールした後、 を使用してデータベース クラスターを正常に開始しましたinitdb -U thisuser -D tmpdb -A trust。ここthisuserで、 は Web サーバー上のユーザー名です。この間、ssh経由でサーバーにログインしています。

また、サーバーの起動は、 を使用しても問題ありませんでしたpg_ctl -D tmpdb start

ただし、データベースを使用してアクセスしようとすると、psql -U postgres常にパスワードが要求されます。

すべてのユーザーとデータベースからの接続を許可するため、これは発生しないはずです。構成ファイルは、データベース クラスタ フォルダ内にあります:tmpdb/pg_hba.confおよびtmpdb/postgresql.conf.

サーバーはに設定されlisten_addresses = 'localhost'、認証設定は次のとおりです。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

設定をいじってみましたが、一度設定すると実際にデータベースにアクセスする方法がわかりません。どうすればアクセスできますか?

前もって感謝します!

解決済みの編集:

以前に何が起こっていたのか正確にはわかりませんが、次のように環境変数を設定する必要がありました。

PGPORT = 5433
export PGPORT

ここで、5433 はpostgresql.confファイルで指定されたポートです。これで問題なく動作します... (@celenius に感謝)。

4

1 に答える 1

1

initdbが で呼び出された場合、 の代わりに がスーパーユーザーとして使用される-U thisuserことが予想されます。thisuserpostgres

実際には、この場合、データベース ユーザーとしても存在しない可能性があります。これは、機能しないpostgres正当な理由です。psql -U postgresユーザーが存在しないことを明かすのではなく、パスワードを要求する理由については、権限のない人に既存のアカウントに関する情報が漏洩しないようにするための一般的な応答です。

それ以外は、pg_hba.confおよびその他のコマンドは正常に見えます。でパスワードなしで接続できるはずですpsql -U thisuser

于 2012-09-12T12:59:42.983 に答える