外部接続を許可してみる
Linux等にDBソフトを導入したのなら、外部接続を容認できるようにしておかなければ非常に面倒だ
Oracleで言えば、リスナーの設定がこの定義にあたる。MySQLではユーザー作成時にユーザーを利用できるホストを指定できる(この時に定義しなければホストを問わない外部接続が可能)
んじゃ、PostgreSQLではどういう風に設定すれば良いのか
接続の設定定義ファイルはインストールディレクトリ内のdataファイルに存在する
pg_hba.confというファイルがそれ
このファイルの大体63行目からが設定を定義している
# TYPE DATABASE USER CIDR-ADDRESS METHOD # IPv4 local connections: host all all 0.0.0.0/xx md5
こんな記述がなされている
8.2のconfではIPとマスクが一つの区分で定義されているが、他のバージョンでは個別に明示してある場合もある様子なので注意。(例えば7系とか)どちらの場合でもマスクを個別に提示して設定できる様子
で、こいつに以下の内容を追加する
(※認証の指定を間違えていたので修正)
# オープンな接続設定 host all all 0.0.0.0 0.0.0.0 password
次はクライアントの設定を行う
どうフォルダ内のpostgresql.confファイルを弄ろう
ここで7と8で明確に違ってくる
7ではtcpip_socketという項目を、8ではlisten_addressesという項目を探す
大体56行目付近で見付かる
#--------------------------------------------------------------------------- # CONNECTIONS AND AUTHENTICATION #--------------------------------------------------------------------------- # - Connection Settings - #listen_addresses = 'localhost' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost', '*' = all # (change requires restart) port = 5432 # (change requires restart) max_connections = 100 # (change requires restart)
とか色々とおまじないが記してある場所だ
右側にコメントアウトした文字列で解説してあるのがすげー親切
つまり
#ローカルオンリー #listen_addresses = 'localhost'
こいつを
#オープン listen_addresses = '*'
とする。ポートはデフォルトから弄っていないなら特に直す必要は無い
7では
tcpip_socket = true
とするとokな様だ
当たり前だけど、設定変更後は再起動する事
・追記
仮想ネットワーク上のWin(PostgreSQL8.2インストールと設定済み)に同じ仮想ネットワーク上の別マシン(Win PostgreSQL8.2インストール済み。接続はpgAdminで実行)からログインを行った所
Error connecting to the server:サーバとの接続が想定外にクローズされました おそらく要求の処理前または処理中にサーバが異常終了したことを意味しています
というアラートが出力されてログインできない
あれ?