PostgreSQLのインストール このエントリーをはてなブックマークに追加

提供:Asterisk Works Wiki
移動: 案内, 検索

目次

はじめに

次の環境にソースからインストールするときの手順について説明する。

項目 備考
インストールパス /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
個人用ツール
名前空間
変種
操作
案内
主なカテゴリ
ツールボックス