PostgreSQL の始め方

CentOS 5.5 に PostgreSQL 9.0 をインストールして初期設定をするまでをまとめます。

まず、OSのユーザーアカウント postgres を作ります。(すでに類似のユーザーアカウントがある場合は、それを使っても良いです。)


$ sudo groupadd postgres
$ sudo useradd postgres -g postgres -d /var/lib/pgsql
$ sudo passwd postgres
今作ったユーザー postgres になって、ソースをダウンロードし、展開します。

$ su postgres
$ mkdir ~/src
$ cd ~/src
$ wget ftp://ftp2.jp.postgresql.org/pub/postgresql/source/v9.0.1/postgresql-9.0.1.tar.gz
$ tar xvfz postgresql-9.0.1.tar.gz
$ cd postgresql-9.0.1

$ ./configure --help
でオプションを確認し、

$ ./configure
$ make
# make install
これで、/usr/local/pgsql にバイナリなどがインストールされました。

~/.bashrc に環境変数を設定

export POSTGRES_HOME=/usr/local/pgsql
export POSTGRES_LIB=$POSTGRES_HOME/lib
export POSTGRES_INCLUDE=$POSTGRES_HOME/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$POSTGRES_LIB
export PATH=$POSTGRES_HOME/bin:$PATH
export PGDATA=/var/lib/pgsql/9.0/data

し、反映させます。


$ source ~/.bashrc
データファイルが入るディレクトリ /var/lib/pgsql/9.0/data を作っておき、データベースを初期化します。

$ initdb --no-locale --encoding=UTF8 -D /var/lib/pgsql/9.0/data
ここで指定したディレクトリ /var/lib/pgsql/9.0/data に色々なファイルが作られています。

次に、データベースサーバーを起動させます。


$ pg_ctl start -l logfile &
psコマンドなどで確認すると、/usr/local/pgsql/bin/postgres が動いているのがわかると思います。
さらに、共有ライブラリへのパス設定を行います。スーパーユーザー権限で /etc/ld.so.conf.d/pgsql.conf というファイルを作って、

/usr/local/pgsql/lib
と書き、この設定を有効にします。

# ldconfig -v

また、ソースファイルに起動スクリプトが同梱されており、これを利用することができます。contrib/start-scripts/linux です。


さて、これから PostgreSQL のユーザーアカウントを作り、データベースを作ります。
まず、OS のユーザーが postgres であることを確認し、データベース・サーバーに接続します。


$ psql
postgres=#
これで、PostgreSQL のスーパーユーザー postgres で接続できたことになります。次のようなコマンドを試してみると良いでしょう。

postgres=# \du
postgres=# \dg
postgres=# \l
postgres=# \c
postgres=# \encoding
postgres=# \h
postgres=# \?
次に、PostgreSQL の一般ユーザー user1 を作ります。

postgres=# CREATE ROLE user1 LOGIN CREATEDB;
postgres=# \password user1
postgres=# \du
さらに、ユーザー uesr1 が所有することになるデータベース db1 を作ります。

postgres=# CREATE DATABASE db1 OWNER user1;
postgres=# \l
ここで、いったんログアウトします。

postgres=# \q
今作った PostgreSQL のユーザーアカウント user1 でデータベース db1 に接続するには、次のようにします。

$ psql -U user1 -d db1
db1=>
ここで、

  • -U オプションを省略すると、OSのカレントユーザー名で接続を試みる
  • -d オプションを省略すると、接続しようとしているユーザー名と同じ名前のデータベースに接続を試みる

ことになります。

参考

日本PostgreSQLユーザ会 オンラインマニュアル http://www.postgresql.jp/document/