PostgreSQLのインストール
目次 |
はじめに
次の環境にソースからインストールするときの手順について説明する。
| 項目 | 値 | 備考 |
|---|---|---|
| インストールパス | /usel/local/pgsql | postgresのデフォルト値 |
| postgresユーザ | postgres | |
| データディレクトリ | /home/postgres/data/ |
インストール
インストールはrootで行う。
ダウンロード
公式サイトからダウンロードする。 PostgreSQL: The world's most advanced open source database http://www.postgresql.org/
インストール
インストールしたファイルをサーバにコピーする。 コピー場所はファイルを展開したり出来る場所ならどこでもいい。/usr/local/srcあたりでかまわない。
>pwd >/usr/local/src >tar zxvf postgresql-8.*.*.tar.gz > >cd postgresql-8.*.* >./configure >make >make install
インストール後の作業
Postgresユーザの作成
Postgresはrootでは起動できない。ということで実行用のユーザをOSに追加する
>adduser postgres
pgadminは外部から直接ログインさせたくないので、パスワードは設定しない。 それにより、rootからsuするしかなくなる。
環境変数の設定
ここからはpostgresユーザでの作業。
フルパスで指定してもpostgreは操作できますが、不便なので環境変数を設定します。 設定するのはpgadminの.bach_profileでいいでしょう。
| 変数名 | 設定値 | 説明 |
|---|---|---|
| PGDATA | /home/postgres/data | データベースのデータファイルを格納するディレクトリを指定する |
| PGLIB | /usr/lib/pgsql | ライブラリの場所を設定 |
| PG_HOME | /usr/local/pgsql | postgreのインストールパスを示す。必須じゃないが便利 |
後は、PG_HOME/binにpathを通しておく。
まとめると
export PGDATA=/home/postgres/data export PGLIB=/usr/lib/pgsql export PG_HOME=/usr/local/pgsql export PATH=$PG_HOME/bin:$PATH
注意 すでにOSのインストール時にPostgreSQLがインストールされている場合があります。 その場合、すでにPATHにpostgreSQLのコマンドが含まれているので注意しましょう。 whichでpg_ctlコマンドを探して、PG_HOME/binにあればOKです。それ以外の場合は、PATHの設定を見直しましょう。
データベースクラスタの作成
まずデータベースクラスタを作成する。 PGDATA環境変数が登録してあれば、次のコマンドを実行するだけ。
>mkdir /home/postgres/data >initdb
PGDATAに管理ファイル群が作成される。
注意 データベースクラスタへのロケールと文字セットエンコーディングの設定をする場合は --locale、-E オプションを使用する。
>initdb --locale=ja_JP.UTF-8 -E UTF-8
起動と停止
さあ、ついに起動できる。 早速起動しよう。次のコマンドを実行!
>pg_ctl -w start
停止は次のコマンドです。
>pg_ctl stop
データベースユーザの作成
データベースが起動した状態で次のコマンドを実行する。
>createuser ユーザ名
データベースを作れるようにするかとユーザを作れるようにするかをきかれるが、とりあえず両方noとする。 なお、これはPostgreSQLのユーザである。DBにログインするためのものでOSのユーザとは異なる。
postgresql8.1からuserという言葉はなくなり、Roleと呼ばれるようになった。 コマンド等は前のまま使えるように名称変更はないが、新しい名前をラップするように変更されている模様。
データベースユーザ作成時にパスワードも設定するには -Pオプションを使う。
以下はDB_USERという名前のユーザをパスワード付きで作成する場合の例
> createuser -P DB_USER > 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) y > Shall the new role be allowed to create more new roles? (y/n) n > CREATE ROLE
ユーザのパスワード設定
ユーザに作成時にパスワードをつけないで後でパスワードを設定する場合にはpostgreSQLのコマンドラインクライアントのpsqlを使って設定する。
pg_hba.confでpassword認証が設定されている場合、パスワードを設定しておかなければ、そのデータベイスユーザでは接続できない。
ローカルホストからの接続などでtrustにしている場合はパスワードをつけなくても接続できる。
>psql template1
Welcome to psql 8.1.2, 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
template1=>alter user ユーザ名 with password '<パスワード>';
ALTER ROLE
なお、ユーザ名にアルファベット大文字を使った場合にはユーザ名を" (ダブルクオート)で囲う必要がある。
データベースの作成
データベースを作成するには次のコマンドを実行する。
>createdb -O ユーザ名 -E UTF8 データベース名
-Oオプションでオーナとなるユーザ名を指定し、-Eオプションでデフォルトのエンコードを指定する(例ではUTF-8を指定している)。
次のコマンドで作成したデータベースを確認できる。
>psql -l
ネットワークの設定
ここまで出来たら、データベースの構築はほぼ終わりです。 でも、localhost以外からのアクセスが出来ないので出来るように設定します。
postgresql.confの設定
まず、サーバの待ちうけIPアドレスとポートを設定します。 PGDATA/postgresql.confをエディタで開いて次のパラメータを設定する。
- listen_addresses
- port
pg_hba.confの設定 [#l76c7151]
今度は接続を許可する接続元の設定を行う。 PGDATA/pg_hba.confをエディタで開いて編集する。 ファイルの頭に説明があるのでよく読んで適切に設定しよう。 設定したら、それを反映するため、PostgreSQLを一旦停止⇒起動する。
自動起動設定
マシンが起動したときに自動的に起動するための設定を説明する。
この作業はrootで実行してください。
ソースディレクトリのcontrib/start-scriptsディレクトリに起動スクリプトがある。 それを/etc/init.dにpostgresという名前でコピーする。
>cd postgresql-8.*.*/contrib/start-scripts >cp linux /etc/init.d >chmod 755 /etc/init.d/postgres
コピーしたらコピーしたスクリプトをエディタで開いてprefix、PGDATA、PGUSERなどのパラメータが稼働環境にあわせて編集する。 最後にchkconfigコマンドでサービスに追加すれば完了。
>chkconfig --add postgres