PostgreSQL9.2の導入

Ubuntu 12.04 LTS ServerではTaskselでPostgreSQLをインストールすることができますが、バージョン9.1です。

個人的に9.2をインストールしたかったので、個別にインストールすることにしました。

PostgreSQL9.2のインストール

まぁ、「Apt - PostgreSQL wiki」に書いてあるとおりなのですが、パッケージリストを登録します。

$ sudo nano /etc/apt/sources.list.d/pgdg.list

として、新規ファイルを作成し、中身を

deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main

とします。「precise」の部分が上記ページとは異なっていますが、ここにはUbuntuのバージョン名が来ますので12.04の場合は「precise」なのです。次に、

wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -

として、認証鍵を追加します。これ、なぜか結構待たされましたので、しばらく反応が無くても我慢しましょう。

鍵が追加できたら、パッケージリストの更新です。

$ sudo apt-get update

更新できたら確認してみましょう。

$ sudo apt-cache search postgresql | grep 9.2

ずらずら出てきたらOKです。

それではインストール!

$ sudo apt-get install postgresql-9.2

これも上記ページとは若干異なるように書いていますが、筆者は9.2をインストールしたかったのでより細かくパッケージを指定しています。また上記ページにあるpgadmin3はGUIのクライアントソフトであって、開発環境には欲しいものですが、Web Server側には不要なものですのでインストールしません。もちろん、筆者は開発環境側にpgadmin3をインストールして、そこからWeb Server上のpostgreSQLにアクセスしたりします。

postgresql.confの編集

PostgreSQLはインストールした直後はローカル以外まともにアクセスできません。アクセスできるように設定が必要なります。

$ sudo nano /etc/postgresql/9.2/main/postgresql.conf

として、ファイルを開き、listen_addressesにアクセスを受け付けるIPを設定します。

192.168.xxx.xxx,localhost

どうも、ここの設定が毎回引っかかってしまう筆者ですが、どうやら、localhostはIPアドレスよりも後ろに書いた方が良いようです。localhostや127.0.0.1が先頭にあると、その後ろに書いた設定が無視されるのか分かりませんがうまいこと接続できません。

そしてもう一つ、記述するIPアドレスはアクセス元の端末ではなくWeb Server自身のIPアドレスだけで良いようです。というか、同じセグメントのIPが全部listenされるようになっているような気もします。外部の端末からpgadmin3で接続してもpsqlコマンドやpg_restoreコマンド叩いてもイケちゃうんですよね。

pg_hba.confの編集

先ほどのファイルでは記述しないとそもそも聞いてくれもしないというものでしたが、こちらのファイルでは権限関連の設定、つまりどういったアクセスを許可するかといった設定になります。

$ sudo nano /etc/postgresql/9.2/main/pg_hba.conf

さて、デフォルトではIPv4ローカルコネクションについて、localhostからのアクセスをmd5認証で受け付けるようになっています。このmd5やpasswordはOSのパスワードとは関係が無くてpostgreSQL内に作成しなければいけないものです。つまり、インストールしたてのときはどうやってもアクセス不能です。

きっちりやるならSSLにした方が良いのだろうけど、とりあえず外部にポートを開放しているわけでもないし、内部のPCが乗っ取られでもしなければ他者にアクセスされることもないので、当面は一番速いであろうtrustで行く事にしました。まぁ、筆者の勉強不足なところですが。

host    all             all             127.0.0.1/32            trust
host    all             all             192.168.xxx.1/24        trust

ローカルホスト、及び、LAN内からのアクセスは無条件に許可するようにしています。ここで、127.0.0.1/32についてもtrustにしているのはglassfishからのpostgreSQLPool接続で使われるためです。

それでは、設定反映っと。

$ /etc/init.d/postgresql restart

[記事作成日: 2013-09-10]

Homepage banner and link for this title's top page
Top > Knowledge > Ubuntu 12.04 LTS Server > PostgreSQL9.2の導入
このエントリーをはてなブックマークに追加
mouse computer 今月のキャンペーン一覧はこちら!
NECパソコンお買い得情報
DELL 【SOHO法人様向け】デル・イチオシページ(ノートブック)
NEC ビジネスPC お得なアウトレット
レノボ・ショッピングお買得情報
Dospara アウトレットPC
NECアウトレット商品ノートPC
Panasonic マイレッツ倶楽部 キャンペーン&お得情報
デル株式会社デル株式会社マウスコンピューター/G-Tune