先の記事で、軽くいい加減なPostgreSQLのインストールを紹介したので、もうちょっと色々設定してみます。
「ターミナルからサーバー起動&停止ができるようにする」ってことしました。
*ここではHogeユーザーがPostgreSQLの実行ユーザーとしてます。セキュリティの観点からroot権限のユーザーだとPostgreSQlは実行できないようになってるのでお気をつけ。
(1)パスを設定する
環境設定ファイルの.bash_profileファイルを開きます。
//ファイルのあるディレクトリに移動
$ cd ~
//ファイルあるか確認
$ ls -a
.
..
.DS_Store
.RData
~~中略~~
.bash_history
.bash_profile
.bashrc
//ファイルを編集
$ vi .bash_profile
//以下の行を追加して上書き
export PATH=$PATH:/Library/PostgreSQL/9.0/bin
export PG_HOME=/Library/PostgreSQL/9.0
export PGDATA=$PG_HOME/data
export PG_LIB=$PG_HOME/lib
//ファイルを再読み込みして設定を反映させる
$ source .bash_profile
PATHにサーバー起動コマンドが入っているディレクトリ(ここでは/Library/PostgreSQL/9.0/bin)を追加することで、どこからでも起動や停止ができるようしています。
また、サーバーを起動する場合には、データベースに格納するデータなどをどのディレクトリに保存するかを設定してあげる必要があります。
それがPGDATAの環境変数で指定してあげた場所です。もちろんこれも任意の場所です。
(2)PostgreSQLのディレクトリの所有者をHogeさんにしてあげる。
コマンドを実行するためには、そのコマンドが入ったディレクトリをPostgreSQLの管理ユーザーの所有物にしなければ!というわけで、しました(これしないと、Permission deniedとかいって怒られます)
この作業はroot権限のユーザーではないとできないので、一度rootになってから、コマンド実行します。
//rootになる。パスワードを求められるので入力。
$ sudo su -
//PostgreSQLがはいったディレクトリをHogeさんの所有物にする。
# chown -R Hoge /Library/PostgreSQL/9.0
# ls -l //確認
total 16
-rw------- 1 Hoge daemon 230 Aug 20 01:15 .bash_history
drwx------ 3 Hoge daemon 102 Aug 20 01:09 Library
drwxr-xr-x 32 Hoge daemon 1088 Jun 4 19:08 bin
drwxr-xr-x 7 Hoge daemon 238 Jun 4 19:07 doc
drwxr-xr-x 29 Hoge daemon 986 Jun 4 19:08 include
drwxr-xr-x 3 Hoge daemon 102 Jun 4 19:07 installer
drwxr-xr-x 32 Hoge daemon 1088 Jun 4 19:08 lib
drwx------ 19 Hoge daemon 646 Aug 20 01:10 olddata
drwxr-xr-x 3 Hoge daemon 102 Jun 4 19:07 pgAdmin3.app
-rwxr-xr-x 1 Hoge daemon 373 Jun 4 19:09 pg_env.sh
drwxr-xr-x 14 Hoge daemon 476 Jun 4 19:09 scripts
drwxr-xr-x 5 Hoge daemon 170 Jun 4 19:07 share
drwxr-xr-x 3 Hoge daemon 102 Jun 4 19:07 stackbuilder.app
drwxr-xr-x 3 Hoge daemon 102 Jun 4 19:09 uninstall-postgresql.app
# exit //元にもどる
logout
厳密にやるなら、パーミッションを700(所有者以外には一切触らせない)とかにすべきなのかもですがローカルで使うだけなので特に設定はしませんでした。
(3)PGDATAフォルダ作成
もともとインストーラーでインストールする時点でこのフォルダは設定してあるのですが、改めて作成します。
私の場合は、現在あるdataフォルダのバックアップをとってから削除をしました。その後、「文字コードUTF8で日本語対応」なデータベースがつくれるような設定をdataフォルダにしてあげました。
//ディレクトリをコピー
$ cp -R /Library/PostgreSQL/9.0/data/ /Library/PostgreSQL/9.0/cdata/
//削除
$rm -rf /Library/PostgreSQL/9.0/data/
$ ls //確認
Library pgAdmin3.app
bin pg_env.sh
doc scripts
include share
installer stackbuilder.app
lib uninstall-postgresql.app
cdata
//initdbというコマンドで、dataディレクトリを作成。
//いろいろ出てくるけど、最後にSuccessって出てくればOK
$ initdb -E UTF8 --no-locale
creating directory /Library/PostgreSQL/9.0/data ... ok
creating subdirectories ... ok
~中略~
Success. You can now start the database server using:
postgres -D /Library/PostgreSQL/9.0/data
or
pg_ctl -D /Library/PostgreSQL/9.0/data -l logfile start
以上で設定完了です。では、やってみます。
■サーバーの稼働状態を確認します(pg_ctl status)
$ pg_ctl status
pg_ctl: no server running
■サーバー起動(pg_ctl start)
$ pg_ctl start
server starting
■サーバー停止
$ pg_ctl stop
waiting for server to shut down....
LOG: received smart shutdown request
LOG: autovacuum launcher shutting down
LOG: shutting down
LOG: database system is shut down
done
server stopped
できたー!