PostgreSQLインストール/カスタマイズ 手順

PostgreSQL データベースのインストールとカスタマイズの手順です。

目次

導入環境

  • CentOS release 5 (Final)
  • Linux kernel 2.6.18-53.1.21.el5

PostgreSQLインストール

yumコマンドでPostgreSQLのインストールも可能ですが、今回は最新版(8.1.3)を使用したかったので、CentOS 5.1 の標準リポジトリからyumでインストールするのではなく、PostgreSQLの本家からダウンロードしてインストールします。

ダウンロード

# mkdir postgresql
# cd postgresql
# wget ftp://ftp2.jp.postgresql.org/pub/postgresql/binary/v8.3.1/linux/rpms/redhat/rhel-5-i386/postgresql-8.3.1-1PGDG.rhel5.i686.rpm
# wget ftp://ftp2.jp.postgresql.org/pub/postgresql/binary/v8.3.1/linux/rpms/redhat/rhel-5-i386/postgresql-server-8.3.1-1PGDG.rhel5.i686.rpm
# wget ftp://ftp2.jp.postgresql.org/pub/postgresql/binary/v8.3.1/linux/rpms/redhat/rhel-5-i386/postgresql-libs-8.3.1-1PGDG.rhel5.i686.rpm
  • postgresql-8.3.1-1PGDG.rhel5.i686.rpm ・・・・・・PostgreSQLクライアント用rpmパッケージ
  • postgresql-server-8.3.1-1PGDG.rhel5.i686.rpm ・・・PostgreSQLサーバ用rpmパッケージ
  • postgresql-libs-8.3.1-1PGDG.rhel5.i686.rpm ・・・・PostgreSQL用rpmライブラリ(クライアント/サーバ両方で必要)

インストール

インストール事前確認(ここでエラーの場合、関連パッケージを事前にインストールします。)

# cd postgresql             ← rpmパッケージをダウンロードしたディレクトリ
# rpm -ivh --test *.rpm

rpmインストール

# rpm -ivh *.rpm
# echo $?                   ← インストール終了コード確認(0であること)

初期設定

PostgreSQL データベースの初期化

これを行わないと起動でエラーとなります。

# service postgresql initdb

PostgreSQL データベース起動

# service postgresql start

PostgreSQL 起動確認

# su - postgres
$ psql
Welcome to psql 8.3.1, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

postgres=# \q
$

    ↑このように表示されればOKです。

カスタマイズ

データベース接続用ユーザ作成

testuser01 というユーザを作成します。ここでは最低限の権限としています。

# su - postgres
$ createuser  testuser01 -P
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) n                        ← 作成するユーザを管理者権限とするか?
Shall the new role be allowed to create databases? (y/n) n        ← 作成するユーザでデータベースを作成できるようにするか?
Shall the new role be allowed to create more new roles? (y/n) n   ← 作成するユーザで別のユーザを作成できるようにするか?
$

※「-P」は、パスワード設定のオプションです。

データベース作成

testdb という名前のデータベースを作成します。

$ createdb testdb

データベース接続認証の設定

データベース接続用ユーザの認証設定をします。postgresユーザはサーバにログインしていれば接続可能。その他のユーザは、md5によるパスワード認証。接続はサーバ内のみ許可。

# cd /var/lib/pgsql/data/
# cp -ip pg_hba.conf pg_hba.conf.backup            ← 設定ファイルのバックアップ
# vi pg_hba.conf
~~~~~~~ 設定ファイルの下のほうが↓このようになるように修正 
# "local" is for Unix domain socket connections only
local   all         postgres                          ident sameuser
local   all         all                               md5
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident sameuser
# IPv6 local connections:
host    all         all         ::1/128               ident sameuser

# service postgresql restart                       ← PostgresSQL再起動

データベース接続確認

以下のように実行してエラーとならなければOKです。

$ psql testdb -U testuser01 -W
Password for user testuser01:
Welcome to psql 8.3.1, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

testdb=> \q
$

SQL実行確認

以下のように実行してエラーとならなければOKです。

$ psql testdb -U testuser01 -W
Password for user testuser01:
Welcome to psql 8.3.1, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

 testdb=> create table testtbl ( s char(8) );                     ← テーブル作成
 CREATE TABLE
 testdb=> \d                                                      ← テーブル作成確認
            List of relations
  Schema |  Name   | Type  |   Owner
 --------+---------+-------+------------
  public | testtbl | table | testuser01
 (1 row)
 
 testdb=> insert into testtbl ( s ) values ('testrow1');          ← 行(row)の挿入
 INSERT 0 1
 testdb=> select * from testtbl ;                                 ← 行(row)の挿入確認
     s
 ----------
  testrow1
 (1 row)
 
 testdb=> update testtbl set s='testupd' where s='testrow1';      ← 行(row)の更新
 UPDATE 1
 testdb=> select * from testtbl ;                                 ← 行(row)の更新確認
     s
 ----------
  testupd
 (1 row)
 
 testdb=> delete from testtbl where s = 'testupd' ;               ← 行(row)の削除
 DELETE 1
 testdb=> select * from testtbl ;                                 ← 行(row)の削除確認
  s
 ---
 (0 rows)
 
 testdb=> drop table testtbl ;                                    ← テーブルの削除
 DROP TABLE
 testdb=> \d                                                      ← テーブル削除確認
 No relations found.
 testdb=> \q

その他

以上で最低限の確認ができます。実運用に適したカスタマイズやチューニングは、別途必要になります。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-06-10 (火) 11:03:46 (3810d)