11

ホスト マシンのポート 8280 に転送された Postgres が実行されている Vagrant を使用して VM をセットアップしました (ポート 5432)。

デフォルトユーザーのパスワードを設定しましたが、ローカルで問題なく接続できます。

ポート 8280 経由でホスト マシンからのアクセスを設定しようとしましたが、信頼方法として「MD5」を使用して動作させることができませんでした。

postgresql.confすべてのアドレスでリッスンするように設定しました。

# postgresql.conf
listen_addresses = '*'

私はpg_hab.conf次のように設定しました:

# pg_hab.conf
#TYPE   DATABASE  USER  CIDR-ADDRESS  METHOD
host    all       all   0.0.0.0/0     md5

これらすべての設定を使用して、ホスト マシンから次のコマンドを実行すると:

psql --host=127.0.0.1 --port=8280 --username=postgres -d mydb -c '\l'

パスワードの入力を求められた後、次のメッセージが表示されます。

psql: FATAL:  password authentication failed for user "postgres"

METHOD を「md5」から「trust」に変更すると、パスワードの入力を求められず、期待どおりに接続できます。私の質問は、「md5」を使用して接続できないのはなぜですか? 入力しているパスワードが正しい (変更済み) ことはわかっていますが、何らかの理由で機能しません。

4

2 に答える 2

25

私はまったく同じ問題を抱えていました。問題はホスト側にあり、基本的にファイアウォールが使用していたポートをブロックしていました。これが私がやったことです(私はOSX Mavericksを使用しています)

  1. ポートを開く(ホスト)

    sudo ipfw add 7000 allow tcp from any to any dst-port 7001

  2. ポート転送を許可するために Vagrantfile を変更します

    config.vm.network "forwarded_port", guest: 5432, host: 7001

  3. postgresql.conf の編集 (ゲスト)

    listen_addresses = '*'

  4. 編集pg_hba.conf(これをもっと調整したいかもしれません)

    host all all 0.0.0.0/0 md5

  5. ここで、ホストから、通常はポート (私の場合は 7001) と「localhost」をホスト アドレスとして使用して接続します。

于 2014-02-10T17:01:49.637 に答える
1

ユーザーのパスワードを設定する必要がありpostgresます。デフォルトではないため、接続できません。

ALTER USER postgres PASSWORD 'somepassword';

ローカル接続はpeer、TCP / IPではなく認証付きのUNIXソケットを使用しているため、おそらく機能します。使用する場合:

psql -h 127.0.0.1 -U postgres postgres

VMでは、実際にTCP / IPベースの接続をテストしているため、これも失敗する可能性があります。

于 2013-01-04T02:14:18.740 に答える