phpPgAdminにログインできません


10

テストマシンでphpPgAdminをセットアップして、常にpsqlCLI を使用する必要なくPostgreSQLとインターフェースできるようにしています。私はPostgreSQL 9.1をRPMリポジトリ経由でインストールしましたが、phpPgAdmin 5.0.4を「手動で」(phpPgAdmin Webサイトからアーカイブを抽出して)インストールしました。ちなみに、私のホストOSはCentOS 6.2です。

私はすでに次の構成変更を行いました:

PostgreSQL

  • 内部ではpg_hba.conf、すべてMETHODのsをmd5 に変更しました。
  • postgresアカウントにパスワードを与えました
  • パスワード付きのwebuserという名前の新しいアカウントを追加しました(このアカウントには他に何もしなかったため、そのアカウントにどのようなアクセス許可が与えられているかを正確に知ることはできません)

phpPgAdmin config.inc.php

  • $conf['servers'][0]['host'] = '';$conf['servers'][0]['host'] = '127.0.0.1';(ここでlocalhostを値として使用してみました)に変更しました。
  • に設定$conf['extra_login_security']falseます。

phpPgAdminにログインしようとすると、正常な認証情報(で機能するものpsql)を使用していても、「ログインに失敗しました」というメッセージが表示されます。FAQの質問3に記載されている手順のいくつかを実行しようとしましたが、これまでのところうまくいきません。今日がPostgreSQLで作業する最初の日であることはおそらく役に立たないでしょう。私はMySQLに精通していますが、現在取り組んでいるプロジェクトにはPostgreSQLを使用する必要があります。

CentOS 6.2でphpPgAdminを設定する方法について誰かが助けを提供できますか?これまでのところ、私の構成でひどく間違ったことをした場合、まだ何かデータを格納しているわけではないので、何か/すべてを吹き飛ばすことは大したことではありません!

私はあなたが持っているかもしれない洞察に感謝します!

回答:


7

まあ、私はそれを理解しました-それはPostgreSQLの経験不足とphpPgAdminからの非常に記述的でないエラーの組み合わせでした。

TCP / IPアクセスが有効になっていないことがわかりました。つまり、PHPアプリケーションがデータベースにアクセスできませんでした。これを修正するには、2つの変更を行う必要がありました。

  • に設定listen_addressesすると'*'、よりうまく機能するように見えましたpostgresql.conf。それが完全に必要かどうかはわかりませんが、このようにファイアウォールが適切に設定されたマシンでは、問題にはなりません。
  • setsebool -P httpd_can_network_connect_db 1Apacheが実際にプログラムを取得して接続するには、ターミナルウィンドウからコマンドを実行する必要がありました。この手順の後でPostgreSQLを再起動する必要があったかどうかは覚えていませんが、おそらく害はありません。

最後の注意:私はライン変更を示唆しているいくつかのことを見たtcpip_socket=true中をpostgresql.conf。これはどうやらPostgreSQL 9.1 では機能しません。実際、私がそれを追加した後、それは開始を拒否しました。だからそれをしないでください。

とにかく、うまくいけば、これは私がしたのと同じ問題に遭遇した人を助けることができます!


Security Enhanced Linux(SELinux)を備えたシステムでは、httpd_can_network_connect_dbフラグを設定するsetsebool必要があります。
2013

明確にするために、同じサーバー上にいる場合、phpPgAdmin(または他のPHPスクリプト)がPostgresに接続するために必ずしもTCP / IPアクセスを有効にする必要はありません。代わりに、ローカルのUNIXソケットを介して接続できます。ただし、おそらくまだSELinux関連の問題が発生します。
xzilla、2016年

0

私はあなたの解決策を見るまでphpPgAdminを設定できませんでした。ソリューションを完了するには:

  • それがセットに便利されていないlisten_address'*'、あなたのphpPgAdminサーバーがPostgreSQLサーバ(私のために9.2)と同じコンピュータ上にある場合、あなたはそれを設定することができますlocalhost
  • 役立つ唯一のことは、SELinuxブール値を設定することです。

0

上記の解決策を試しましたが、「ログイン失敗」メッセージがまだ表示されます。解決するにpasswordは、pg_hba.confファイルでIPv6も設定されていることを確認する必要がありました。だからそうします:vi /var/lib/pgsql/9.4/data/pg_hba.confそしてそれに応じて編集します。次に、httpdとpostgresqlの両方を再起動します(使用しているバージョンに関係なく)。


0

さて、デフォルトのユーザーはpostgresで、新規インストールのパスワードはありません。したがって、ボックスにこれを入力し、パスワードボックスをクリアします。クリック。完了しました。

pgAdmin4を使用し、最初のログイン時にユーザーpostgresに使用するパスワードと同じパスワードを入力した場合。phppgadminで、ユーザー名としてpostgresと入力し、パスワードボックスにそのパスワードを入力します。クリック。できました。ありがとうございました


0

GitLab-CEインストールされたサーバーで実行しているときに、ログファイルに表示されるメッセージは次のとおりです。

tail -f -n 8 /var/log/postgresql/postgresql-*-main.log
......
2019-07-24 16:33:15.073 EDT [9640] postgres@template1 LOG:  provided user name (postgres) and authenticated user name (gitlab-www) do not match
2019-07-24 16:33:15.073 EDT [9640] postgres@template1 FATAL:  Peer authentication failed for user "postgres"
2019-07-24 16:33:15.073 EDT [9640] postgres@template1 DETAIL:  Connection matched pg_hba.conf line 85: "local   all             postgres                                peer"

だから、私はpsqlcli を介してに接続し、不足している役割/ユーザーを作成します(私の場合gitlab-www):

# sudo -u postgres psql
CREATE USER "gitlab-www" WITH PASSWORD 'YouKnow..' CREATEDB CREATEROLE SUPERUSER LOGIN;

そして、ログインプロセスがドアを開けます。


一般に、ピア認証は、与えられたユーザーを(psqlのように)コマンドライン経由でPostgresにアクセスすることのみができるように制限し、通常はphpPgAdminでは機能しません。新しいユーザーの作成は良い解決策ですが、pg_hba.confで認証方法を変更することもできます。
xzilla
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.