■PostgreSQLのダウンロード
⇒PostgreSQL7.4.1の変更点
■PostgreSQL専用のユーザーとグループの追加
PostgreSQLは、
rootでの運用はできないため、インストールを行う前に予め、PostgreSQL専用のユーザーとグループを作成しておきます。
# groupadd postgres
# useradd postgres -g postgres -d /home/postgres
# passwd postgres |
|
次に、PostgreSQLがインストールされるディレクトリを予め作成しておき、所有者をpostgreとします。その後、/usr/local/src
配下に"postgresql-バージョン名" のディレクトリを作成し、そのディレクトリの所有者もpostgresにしておきます。このディレクトリを予め作成しておかないと、su
postgres でpostgres でログインした際にディレクトリが存在しないため、tar コマンドで展開できません。
# mkdir /usr/local/pgsql
# chown postgres.postgres /usr/local/pgsql
# mkdir /usr/local/src/postgresql-7.4.1
# chown postgres.postgres /usr/local/src/postgresql-7.4.1
|
|
root での作業はここまです。ここからは、postgresユーザーとして作業を行います。
# su - postgres
$ cd /usr/local/src/
$ tar xzvf postgresql-7.4.1.tar.gz
$ cd postgresql-7.4.1 |
|
■PostgreSQLのインストール
7.3以降は、--enable-multibyte や --enable-syslog は標準で組み込まれますその他のオプションに関しては、configure
--help で随時、確認してください。make check では、正常にコンパイルされたかどうかの確認を行います。
$ ./configure --enable-multibyte=EUC_JP
--with-openssl=/usr/local/ssl
$ make all
All of PostgreSQL successfully made.
Ready to install.
$ make check
======================
All 93 tests passed.
======================
$ make install
PostgreSQL installation complete. |
|
■環境設定
postgresのホームディレクトリ直下にある .bash_profile に以下の行を追記します。
$ cd
$ vi .bash_profile
PATH=$PATH:$HOME/bin:/usr/local/pgsql/bin
export POSTGRES_HOME=/usr/local/pgsql
export PGDATA=$POSTGRES_HOME/data
export PGLIB=$POSTGRES_HOME/lib
export LD_LIBRARY_PATH=$POSTGRES_HOME/lib |
|
システムにPATH の追加を反映させます。
■データベースクラスタの作成
次に、データベースのデータを格納するディレクトリを作成します。このことを
クラスタと呼びます。initdb
コマンドでデータベースクラスタを作成しますが、この時、必ずpostgres ユーザーとして実行してください。データベースクラスタは上記で設定したPGDATA
(=/usr/local/pgsql/data)に作成されます。--pgdata オプションで作成する場所を指定することもできます。上記で環境変数のPGDATAを加えた場合は、--pgdata
を指定する必要はありません。
$ initdb --encoding=EUC_JP
Success. You can now start the database
server using:
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
or
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data
-l logfile start |
|
■PostgreSQLの起動
以下のコマンドでPostgreSQLのデーモンプロセスであるpostmasterを起動させます。必要に応じて、起動前に/usr/local/pgsql/postgresql.conf
を編集しておきます。この時、
pg_ctl: no database directory specified
and environment variable PGDATA unset のようなエラーが出た場合は、-D
オプションをつけてPGDATA のディレクトリを指定してみてください
(-D /usr/local/pgsql/data)。
$ pg_ctl -w start
LOG: database system was shut down at
2004-01-05 22:16:57 JST
LOG: checkpoint record is at 0/9B0B5C
LOG: redo record is at 0/9B0B5C; undo record
is at 0/0; shutdown TRUE
LOG: next transaction ID: 534; next OID:
17142
LOG: database system is ready
waiting for postmaster to start...done
postmaster successfully started |
|
■データベースへの接続確認
以下のコマンドを実行して正常に表示されればOKです。
# su - postgres
$ psql -l
List of databases
Name | Owner | Encoding
-----------+----------+----------
template0 | postgres | EUC_JP
template1 | postgres | EUC_JP
(2 rows)
|
|
また、次のようにデータベースにログインして確認します。template1 とはPostgreSQLに標準で用意されているサンプルデータベースです。以下のように表示されれば正常に稼動しています。対話形式を終了させるには「
\q 」とタイプしてください。
$ psql template1
Welcome to psql 7.4.1, the PostgreSQL interactive
terminal.
Type: \copyright
for distribution terms
\h
for help with SQL commands
\?
for help on internal slash commands
\g
or terminate with semicolon to execute
query
\q
to quit
template1=#
|
|
もうひとつ動作確認です。
$ pg_ctl status
pg_ctl: postmaster is running (PID: 15289) |
|
■自動起動の設定
PostgreSQLの配布ソースの中にサンプルの自動起動設定ファイルが用意されています。これを、/etc/rc.d/init.d
配下に postgresql としてコピーし、実行許可を与えます。ファイルの内容は
こちらを参照。
# cd /usr/local/src/postgresql-7.4.1/contrib/start-scripts
# cp linux /etc/rc.d/init.d/postgresql
# chmod 755 /etc/rc.d/init.d/postgresql
# chkconfig --add postgresql
# chkconfig --list postgresql
postgresql 0:オフ 1:オフ 2:オン 3:オン 4:オン
5:オン 6:オフ |
|
■クライアントマシンからの接続
PostgreSQLはデフォルトでは、クライアントからの接続を拒否する設定になっています。クライアントからのアクセスを許可するにはデータベースクラスタ(/usr/local/pgsql/data)にある、pg_hba.conf
及び postgresql.conf を編集します。まず、postgresql.conf を開いて、
#tcpip_socket
= falseの行を以下の通りに修正します。false を true に修正し、コメントを削除します。
次に、pg_hba.conf を開いて以下の行を見つけて、自ネットワークに合わせて
host
行を修正します。書式は、以下のようになっています。
書式:local データベース名 認証タイプ [ 認証引数 ]
host データベース名 IPアドレス ネットマスク 認証タイプ [ 認証引数 ]
local all all trust
host all all 172.16.50.0 255.255.255.224
trust
host all all 172.16.51.0 255.255.255.240
trust |
|
認証のタイプには、
trust、password、crypt、ident、krb4、krb5、reject
があります。trust では、接続は無条件で許可されます。password は、ユーザーごとに設定されたパスワードでログインしますが、パスワードは暗号化されずに平分で流れます。crypt
では、挑戦応答プロトコルによって暗号化されるため、password より安全です。krb はKerberos
を使った暗号化認証を用います。reject は接続を拒否します。
以上の編集を終えたら、クライアントマシンからデータベースにアクセスしてみます。再起動をしないと設定が変更にならないと思います。アクセスするには、-h
オプションをつけてPostgreSQLサーバーのIPアドレスを指定します。
$ psql -l -h 172.16.50.2
List of databases
Name | Owner | Encoding
-----------+----------+----------
template0 | postgres | EUC_JP
template1 | postgres | EUC_JP
(2 rows) |
|
仮に認証タイプにcrypt を使用するのならば、以下のようにします。
host all all 172.16.50.0
255.255.255.224 crypt |
|