Symfoware

Symfowareについての考察blog

DebianのPostgresqlに別の端末からJDBCで接続する

DebianにPostgresqlをインストールし、ユーザーの追加を行いました。
DebianにPostgresqlをインストールし、ユーザーを作成する

WindowsからJDBCでDebianのPostgresqlに接続してみます。




外部接続許可



Postgresqlに外部(別の端末)から接続できるように、設定ファイルを変更します。


まずは、「postgresql.conf」


# vi /etc/postgresql/8.3/main/postgresql.conf




リッスンするIPアドレスを指定します。
初期値だと、コメントアウトされていますので、コメントを解除し、
「*」(Postgresqlのインターフェース全て)を指定しておきます。


### '*'に変更して保存
#listen_addresses = 'localhost'         # what IP address(es) to listen on;
listen_addresses = '*'





次に「pg_hba.conf」


# vi /etc/postgresql/8.3/main/pg_hba.conf




IPv4のIPアドレスで、接続を受け付ける範囲を指定します。


# IPv4 local connections:
host    all         all         127.0.0.1/32         md5
#この行を追加
host    all         all         192.168.1.0/24        trust





二つのファイルの編集が終わったら、Postgresqlを再起動します。



# /etc/init.d/postgresql-8.3 restart
Restarting PostgreSQL 8.3 database server: main.




これで、別の端末からの接続が行えるようになるはずです。





JDBCドライバの取得



http://jdbc.postgresql.org/
ここからJDBCドライバをダウンロードします。

今回、Debianで動作しているPostgresqlのバージョンが8.3.11だったので、
postgresql-8.3-605.jdbc4.jarをダウンロードし、クラスパスに含めました。


ロードするドライバのクラス名は「org.postgresql.Driver」
接続文字列は「jdbc:postgresql://[ホスト名]:[ポート番号]/[データベース名]」
となります。

接続と検索のサンプルは以下の通り。



package com.fc2.blog68.symfoware.postgres;

import java.sql.*;

public class Sample {
    
    public static void main(String[] args) {
        
        //接続文字列は
        //jdbc:postgresql://[ホスト名]:[ポート番号]/[データベース名]
        String url = "jdbc:postgresql://192.168.1.1:5432/sample";
        
        try {
            //JDBCドライバのロード
            Class.forName("org.postgresql.Driver");
            
            //接続
            Connection con = DriverManager.getConnection(url, "pguser", "password");
            
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("select * from sample_t");
            
            while(rs.next()) {
                System.out.println(rs.getString(1));
            }
            rs.close();
            stmt.close();
            
            con.close();
            
        } catch(Exception e){
            e.printStackTrace();
        }
        
    }

}







ちなみに、ちゃんとPostgresqlの外部接続許可設定が行えていない場合は、
こんなエラーになってしまいます。


org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:123)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:124)
    at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
    at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:29)
    at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
    at org.postgresql.Driver.makeConnection(Driver.java:386)
    at org.postgresql.Driver.connect(Driver.java:260)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.fc2.blog68.symfoware.postgres.Sample.main(Sample.java:14)









関連記事

テーマ:データベース - ジャンル:コンピュータ

  1. 2010/08/05(木) 12:10:23|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<jQuery UIのダウンロードと使い方 | ホーム | DebianにPostgresqlをインストールし、ユーザーを作成する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/490-ad70ad5f
この記事にトラックバックする(FC2ブログユーザー)