PostgreSQL の始め方
CentOS 5.5 に PostgreSQL 9.0 をインストールして初期設定をするまでをまとめます。
まず、OSのユーザーアカウント postgres を作ります。(すでに類似のユーザーアカウントがある場合は、それを使っても良いです。)
今作ったユーザー postgres になって、ソースをダウンロードし、展開します。
$ sudo groupadd postgres
$ sudo useradd postgres -g postgres -d /var/lib/pgsql
$ sudo passwd 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
これで、/usr/local/pgsql にバイナリなどがインストールされました。
$ ./configure
$ make
# make install
~/.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
し、反映させます。
データファイルが入るディレクトリ /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
次に、データベースサーバーを起動させます。
psコマンドなどで確認すると、/usr/local/pgsql/bin/postgres が動いているのがわかると思います。
$ pg_ctl start -l logfile &
さらに、共有ライブラリへのパス設定を行います。スーパーユーザー権限で /etc/ld.so.conf.d/pgsql.conf というファイルを作って、
と書き、この設定を有効にします。
/usr/local/pgsql/lib
# ldconfig -v
また、ソースファイルに起動スクリプトが同梱されており、これを利用することができます。contrib/start-scripts/linux です。
さて、これから PostgreSQL のユーザーアカウントを作り、データベースを作ります。
まず、OS のユーザーが postgres であることを確認し、データベース・サーバーに接続します。
これで、PostgreSQL のスーパーユーザー postgres で接続できたことになります。次のようなコマンドを試してみると良いでしょう。
$ psql
postgres=#
次に、PostgreSQL の一般ユーザー user1 を作ります。
postgres=# \du
postgres=# \dg
postgres=# \l
postgres=# \c
postgres=# \encoding
postgres=# \h
postgres=# \?
さらに、ユーザー uesr1 が所有することになるデータベース db1 を作ります。
postgres=# CREATE ROLE user1 LOGIN CREATEDB;
postgres=# \password user1
postgres=# \du
ここで、いったんログアウトします。
postgres=# CREATE DATABASE db1 OWNER user1;
postgres=# \l
今作った PostgreSQL のユーザーアカウント user1 でデータベース db1 に接続するには、次のようにします。
postgres=# \q
ここで、
$ psql -U user1 -d db1
db1=>
- -U オプションを省略すると、OSのカレントユーザー名で接続を試みる
- -d オプションを省略すると、接続しようとしているユーザー名と同じ名前のデータベースに接続を試みる
ことになります。
参考
日本PostgreSQLユーザ会 オンラインマニュアル http://www.postgresql.jp/document/