ODBCテストエラー(pg_hba.conf)についての質問
- 質問者は、CentOS 5.6 + PostgreSQL 9という環境でODBC接続のテストを行おうとしましたが、"pg_hba.conf"ファイルが見つからずエラーが表示されています。
- "pg_hba.conf.sample"ファイルをコピーしてリネームし、"host all all xxx.xxx.xxx.xxx/xxx trust"の記述を追加してもエラーは解決しませんでした。
- 質問者は、なぜ"pg_hba.conf"ファイルが見つからないのか、リネームしたファイルに正しい記述を追加してもエラーが解決しないのか、このエラーが発生する原因について知りたいと思っています。
- ベストアンサー
ODBCテストエラー(pg_hba.conf)
おせわになります。 早速ですが質問です。 -------------------------------------------------- 仮想PC(VMWare)側 CentOS 5.6 + PostgreSQL 9 実PC Win XP -------------------------------------------------- と言う環境で、ODBC接続のテストを行おうとすると、 「FATAL:no pg_hba.conf entry for host "xxx.xxx.xxx.xxx", user "xxx", database "xxx", SSL off」 と表示されます。 調べたところ"pg_hba.conf"に修正が必要とのことですが、"pg_hba.conf"なるファイルが見付らず、代わりに?"pg_hba.conf.sample"と言うファイルが存在します。 場所は"opt/postgreSQL/9.0/share/postgresql"です。 とりあえず、同じフォルダにコピーを作成してリネームし、"host all all xxx.xxx.xxx.xxx/xxx trust"の記述も追加しましたが、結果は変わらずでした。 そこで、 -------------------------------------------------- 1."pg_hba.conf"が見付らない時点で、何かおかしい(セットアップエラー?)のか? 2.同じフォルダにコピーを作成してリネーム、"host all all xxx.xxx.xxx.xxx/xxx trust"の記述追加は正しいのか? 3.2が正しいのであれば、ODBC接続テストでこのエラーが出る原因には何が考えられるか? -------------------------------------------------- が解る方はおみえでないでしょうか? 因みに、仮想PCのファイアウォールは無効にしてあり、実PCからのPingが飛ぶのも確認しております。 以上、よろしくお願いいたします。
- prd5678
- お礼率82% (19/23)
- PostgreSQL
- 回答数3
- ありがとう数1
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 3008 ? S 0:00 /opt/PostgreSQL/9.0/bin/postgres -D /opt/PostgreSQL/9.0/data > と表示されますが、このフォルダにはファイルのコピーは出来ません。 > アクセス権が無いようですが、そう言うものなのでしょうか? はい。PostgreSQLのサービス実行やデータベース管理のためのユーザーが 登録されており、そのユーザーだけにアクセス権が与えられているはずです。 ユーザー名は postgres が一般的だと思います。 例えば自分の手元だとこんな感じです。 [root@www ~]# ls -ld /opt/PostgreSQL/9.0/data drwx------ 13 postgres postgres 4096 11月 1 12:55 /opt/PostgreSQL/9.0/data > …インストールはこのユーザーで行ったはずなのですが。 途中 su や sudo コマンドを使って、postgres ユーザーや root の権限で インストールを行っていないですかね。 ひとまず root に su して、/opt/PostgreSQL/9.0/data の下を 調べてみてはどうでしょうか。
その他の回答 (2)
- tomaju
- ベストアンサー率76% (84/110)
実は、 /opt/PostgreSQL/9.0 以下にインストールする流儀は、 初めて知ったのですが、PostgreSQLのインストールはどのように 行われたのでしょう。 ひょっとしてEnterpriseDB社提供のバイナリですかね? http://www.enterprisedb.com/products-services-training/pgdownload とすると、/opt/PostgreSQL/9.0/data の中に pg_hba.conf がないでしょうか? また CentOS 上で ps ax | grep postgres を実行すると以下のような行が出てこないでしょうか。 8512 ? S 0:00 /opt/PostgreSQL/9.0/bin/postgres -D /opt/PostgreSQL/9.0/data ここで -D の後がデータベースクラスタの場所を示しており、その中に pg_hba.conf を 置けば参照されると思うのですが。。。
補足
tomaju さん、おせわになります。 >…PostgreSQLのインストールはどのように >行われたのでしょう。 >ひょっとしてEnterpriseDB社提供のバイナリですかね? お恥ずかしい話ですが、社内の人間からの指示・提供で行ったため、提供元がはっきりしません。 (指示した人間も「忘れた」としか…) インストールも、あるWebページのハードコピーを資料に行いました。 >とすると、/opt/PostgreSQL/9.0/data の中に pg_hba.conf がないでしょうか? このフォルダ、エクスプローラ(?)で見ると「空」と表示され、道路標識の「進入禁止」のようなマークも表示されています。 また、 >また CentOS 上で ps ax | grep postgres を実行すると以下のような行が出てこないでしょうか。 >8512 ? S 0:00 /opt/PostgreSQL/9.0/bin/postgres -D /opt/PostgreSQL/9.0/data 実行すると、 3008 ? S 0:00 /opt/PostgreSQL/9.0/bin/postgres -D /opt/PostgreSQL/9.0/data と表示されますが、このフォルダにはファイルのコピーは出来ません。 アクセス権が無いようですが、そう言うものなのでしょうか? …インストールはこのユーザーで行ったはずなのですが。 一見普通に動いているように見えるのですが、やはり、インストール自体がおかしいのでしょうか?
- tomaju
- ベストアンサー率76% (84/110)
PostgresSQL 9 を CentOS で使ったことは未だないため、 8 や Windows 版の 9 からの類推になってしまうのですが。。。 > 1."pg_hba.conf"が見付らない時点で、何かおかしい(セットアップエラー?)のか? initdb でデータベースクラスタの初期化をしていると思います。 そのデータベースクラスタのディレクトリの中に pg_hba.conf がないでしょうか? 標準パッケージの postgresql-server-8.1.x だと /var/lib/pgsql/data になります。 ソースからコンパイルした場合は /usr/local/pgsql/data かもしれません。 http://d.hatena.ne.jp/bose999/20100922/1285087812 の記事では、 CentOS5.5へPostgreSQL9.0をyumでインストールしています。 データベースクラスタのディレクトリは /var/lib/pgsql/9.0/data で、 /var/lib/pgsql/9.0/data/pg_hba.conf を編集しています。 > 2.同じフォルダにコピーを作成してリネーム、"host all all xxx.xxx.xxx.xxx/xxx trust"の記述追加は正しいのか? opt/postgreSQL/9.0/share/postgresql はサンプルや雛形のファイルを 格納するディレクトリと思われます。 このフォルダにコピーを作成しても、動作に反映されないと考えます。
補足
tomaju さん、回答ありがとうございます。 pg_hda.conf ですが、ファイル検索しても先に書いた"pg_hda.conf.sample"しかヒットしませんでした。 また、ディレクトリ名"pgsql"も存在しません。 (/var/libの下にも/usr/localの下にも…) 他方、"postgresql"(大文字小文字問わず)の名前を持つディレクトリが -------------------------------------------------- /opt /opt/PostgreSQL/9.0/doc /opt/PostgreSQL/9.0/include /opt/PostgreSQL/9.0/lib /opt/PostgreSQL/9.0/share -------------------------------------------------- に存在しています。 >opt/postgreSQL/9.0/share/postgresql はサンプルや雛形のファイルを >格納するディレクトリと思われます。 >このフォルダにコピーを作成しても、動作に反映されないと考えます。 仰るとおり、動作に何も影響を与えていないようです。
関連するQ&A
- PostgreSQLのセキュリティのHBA設定で、IPアドレスとはどこで見付けることができますか?
始めまして。linuxベースでPostgreSQLを使っています。 セキュリティを設定しようと思い、 /usr/local/pgsql/data/pg_hba.conf に host all 192.168.10.1 255.255.255.255 trust と勉強本にありますが、3項目めの IPアドレス と4項目めの アドレスマスクはどこで調べることができるのでしょうか?? そのIPアドレスはスーパーユーザーやローカルユーザーによって違いますか? もしよろしければ、教えていただきたいです!
- 締切済み
- Linux系OS
- odbc接続するときにグローバルIPでの接続は可能?
社内LAN上で、ODBCを使ってAccess2000でデータの参照、更新を当たり前のようにしていますが、インターネットを経由した遠方のサーバ上にあるpostgreSQLに対しても接続可能なのでしょうか?先ほどリンクを張ろうと試してみたらODBCエラーが表示されました。サーバでpg_hba.confの設定を変更するのでしょうか?ODBCドライバのバージョンは、7.01.00になります。 postgreSQLのバージョンは7.4.2で、OSはRHL9です。 よろしくお願いします。
- ベストアンサー
- PostgreSQL
- netstat実行時のlocalhost.localdom:postgresの意味
postgresをlocalhost以外から接続したいと思い、pg_hba.confに host all all XXX.XXX.XXX.XXX/32 trust と設定したのですが接続できず困っています。 netstat -l -A inetを実行すると tcp 0 0 localhost.localdom:postgres *:* LISTEN と表示されますが、Local Addressに「localhost.localdom:postgres 」と表示されるのは、localhostのみpostgresの接続が許可されているという意味でしょうか?
- 締切済み
- Linux系OS
- phpPgAdminでログインできない
おせわになります よろしくお願いします。 現在、ファーストサーバー様のデルタ1を使用して サーバーの構築を行っています。 WEBページまで見れるようになったのですがphpPgAdminでログインできなくて困っています よろしくお願いします。 【pg_hba.conf】 local all all ident sameuser # IPv4 local connections: host all all 127.0.0.1/32 ident sameuser # IPv6 local connections: host all all ::1/128 ident sameuser local all all trust host all all 192.168.0.0/24 trust host all all 0.0.0.0/0 md5 【config.inc.php】 $conf['servers'][0]['host'] = '127.0.0.1'; $conf['servers'][0]['defaultdb'] = 'test'; $conf['extra_login_security'] = false; テストというデータベースは作成済みです この状態で[postgres]でログインしようとすると ログインに失敗しましたとなります ユーザーIDとパスワードは何度も試したので間違いないと思うのですが SSHからのデータベース操作はできます。 以上よろしくお願いします
- ベストアンサー
- Linux系OS
- データベースへのアクセスができない
ソース上でコネクションを取得しようとすると、 以下のエラーが出てコネクション取得ができません。 org.postgresql.util.PSQLException: The connection attempt failed. 他の方が上記のエラーが発生したときの方法をいくつか試してみましたが、 変化ありませんでした。 Connection con = DriverManager.getConnection ("jdbc:postgresql://127.0.0.1:5432/db_test","postgres","PASS"); (1)上記の「127.0.0.1:5432」の箇所をそれぞれ「localhost:5432」「localhost」に変える (2)接続許可リスト(pg_hba.conf)に「host all all 127.0.0.1 255.255.255.255 trust」を追加する (3)ファイアーウォールをはずす。 あと、tcpipによる接続を許可しなければならないため、postgresql.conf を編集し、 tcpip_socket=false を tcpip_socket=true に変える という記述がありましたが、 postgresql.conf に tcpip_socket という項目はみつかりませんでした。 postgreSQLのバージョンは8.4を使用しております。 また、プラットフォームはAndroidを使用しております。 AndroidでJDBCが使えるかどうかという疑問は残りますが、 JDBCを追加した際にエラーなどが起こらなかったため、 問題ないという認識でいます。 お門違いな認識・記述が多々あるかと思いますが、よろしくお願いします。
- ベストアンサー
- PostgreSQL
- TCP/IP接続
OS:fedora7 postgresql:8.2.5 ClientPC:windowsXP にてpgAdminIIIで接続したいのですが、接続できません。 エラー内容は 「server doesn't listen・・・・accepting TCP/IP connections on port 5432?」 という感じです。 postgreの起動時には /etc/rc.d/init.d/postgresql start -i ってな感じで「-i」オプションはつけてますし、 pg_hba.confにも host all all 自PCのIPaddress/24 trust ってな感じで、 自分のPCからのアクセスを許可するように設定してます。 あと、いろいろ自分なりに調べると、 postgresql.confの tcpip_socket = true にすべきというのを知りましたが、 このような項目はありません。 また記述して起動するとエラーとなります。 あとは listen_addresses = '*' port = 5432 としています。 他に設定し忘れているものがあるのでしょうか? もしくは、何か確認すべきものありますでしょうか? ご存知の方おられましたらご教授願います。 よろしくお願いいたします。
- 締切済み
- PostgreSQL
- Common SQL Environment で接続できません。
Common SQL Environment を使い、RedHat9にインストール時に自動的に入れたPostgreSQLに接続しようとすると、 connectDB() connect() feild:No error Is the postmaster running (with -i) at '192.168.10.5' and accepting connectons on TCP/IP port'5432'? と、エラーがでて、接続できません。 pg_hba.confには、 host all xxxxx 192.168.10.2 255.255.255.0 trust を追加。 postgresql.conf では、 tcpip_socket = true port = 5432 のコメントを外しています。 他に、何か必要なのでしょうか? あちこち情報を探しているのですが、なかなか見つからなくて。 よろしくお願いします。
- ベストアンサー
- PostgreSQL
- インターネットアクセス
データベースにアクセスする為に、 pg_hba.confを編集するのですが、 思ったように行かなくて困っています。 host all all 127.0.0.1 255.255.255.255 trust とデフォルトではなっていて、ローカルだけからアクセスできますよね。 ネット経由でアクセスする為に host all all 192.168.0.3 255.255.255.0 trust (ネットマスクはこれでいいのですよね?すいません本のとおりです・・・よくわかっていないです) これでネット経由でアクセスできたのですが、 ローカルからのアクセスが出来なくなってしまいました・・・ ローカル、ネット、両方からアクセスする為にはどうしたらよいのですか? また本に host all all 0.0.0.0 0.0.0.0 trust とやるとどこからでもつながってしまう、と書いてあったのですが、逆に全くつながらなくなりました・・・ それとふとした疑問なのですが、ここの設定でUSER(右から2番目)がallなのに、違うユーザー名でアクセスしようとするとエラーになります。どういうことなんでしょうか?
- ベストアンサー
- PostgreSQL
- pg_connect関数
すみません、質問させてください。 PostgreSQLでPHPの接続をしようと考えています。 Apache, PHP, PostgreSQLのインストールは終了 しています。 PHPのスクリプト内で、 if( !$pg_con=pg_connect("host=$hostname dbname=test user=nobody") ) { と記述して接続を試みているのですが、 Call to undefined function: pg_connect() ・・・ というエラーが出てしまいます。 どのように対処すればいいかアドバイスを下さい。 お願いいたします。
- 締切済み
- その他(データベース)
- PHPとPostgreSQLがつながらない
PHPとPostgreSQLの初心者です。PHPとPostgreSQLを 使ってプログラムを作ろうと思ってます。 開発はPC上で、PostgreとPHPサーバはLinuxマシンに あります。まず最初にPostgreのインストールですが、 Fedora Core5 に着いていたPotsgreSQL8.1.3を入れ ました。設定としては、 postgresql.confでは listen_address='localhost,192.168.1.3' としました。192.168.1.3はLinuxマシンのローカル アドレスです。 pg_hba.confではconnectionのところで host all all 192.168.1.3 255.255.255.0 tyust としました。その後 host all all 0.0.0.0 255.255.255.0 tyust とかいろいろ試してみました。 一方PHPの方はほとんど何も設定をしていません。と いうか設定方法がよくわかりません。 以上の環境で、簡単なPHPプログラムをPostgreにつなげないで実行したところ問題なく動きました。 20行くらいのPHPを書いてみましたが、特に問題はあ りませんでした。 PostgreSQLの方は、PCからSSHで入って、接続テスト 用のDBを作り、テーブルも3つ作って、データを数件 Insertしました。 いよいよPHPからDBにつなぐことになったのですが、 プログラム上では以下のように書きました。 <?php print "こんにちは"; $conn = pg_connect ('host=192.168.1.3 port=5432 dbname=phptest user=postgres'); print "こんばんは"; if (!$conn) { print "PostgreSQLへの接続に失敗です"; exit(); } else ・ ・ して実行したところ、「こんにちは」は表示されま したが、「こんばんは」以下はは表示しませんで した。$conn の先には進んでいないようです。 当然ここに書いた以外にも設定を変えてみましたが、 つながりませんでした。よろしくお願いします。
- 締切済み
- PHP
お礼
バッチリ解決しました。 仰るとおり、su にして調べたら、pg_hba.conf があり、それを編集したら接続出来るようになりました。 色々と勉強になりました。 ありがとうございます。