こんにちは。 先日から, Linux Mint で PostgreSQLを使い始めましたが, 早速つまづきました。
Synaptic からインストールを行うと, locale を OSのlocale で指定されてしまったり, データベースクラスタが自動的に作られてしまいます。
そこで, データベースクラスタを再度 --no-locale オプションで作ったり, データベースクラスタを移動させたりしたいわけですが, 標準状態では, initdb などのコマンドが使えません。
そこで, ある程度カスタマイズしないといけないのです。 Ubuntuでもたぶん一緒です。
(Let's postgreさんのWebサイトが非常に参考になりました)
1. initdb コマンド
> whereis initdb
initdb: /usr/share/man/man1initdb.1.gz
とありますが
> initdb
initdb: command not found
と「ないよ」と言われます。
initdb コマンドは
/usr/lib/postgresql/9.1/bin
にあります。PATHはとおっていません。
ここにパスを通してもいいですがpsqlなどのコマンド同様シンボリックリンクでも貼っておきましょう。
ln -s /usr/lib/postgresql/9.1/bin/initdb /usr/bin/initdb
これで, 使用できるようになりました
※psql などは, pg_wrapper というコマンドになっており, これのシンボリックリンクとなりデフォルトで使用できます
2. PostgreSQL サーバーの停止
/etc/init.d/postgresql を使って停止させます。(ただし, postgresユーザで)
このファイルの権限は, デフォルトで 700 になっているので, postgresユーザにも権限を
与える必要があります。(777など, あまりよくないですが)
> su -
> chmod 777 /etc/init.d/postgresql
> su postgres
> /etc/init.d/postgresql stop
データベースが止まりました。
※止めるときは, root でもいいみたいです。(スタートはだめでした)
3. データベースクラスタの削除
デフォルトでは, /var/lib/postgresql/9.1/main です
main 以下をざっくり削除しましょう。
> su -
> rm -rf /var/lib/postgresql/9.1/main
> mkdir main
mainは空のディレクトリとして戻しましょう
4. データベースクラスタの構築
postgres ユーザになって, initdb コマンドを実行しましょう
> su -
> su postgres
> initdb -D /var/lib/postgresql/9.1/main --no-locale
これで, main 以下にデータベースクラスタができました。
5. SSLコネクションの設定
4まででデータベースクラスタの構築は終了ですが, このままでは スタートおよび接続が
できません。 理由は, データベースにTCP/IP接続する際の, セキュリティ設定が足りないと
怒られてしまうからです。
元々データベースクラスタ内にあった設定どおりに, サーバーkey の設定を行います。
サーバーkeyは別の場所にあるので, そこへシンボリックリンクをはります
>cd /var/lib/postgresql/9.1/main
>ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem server.crt
>ln -s /etc/ssl/private/ssl-cert-snakeoil.key server.key
これで完成です。
> /etc/init.d/postgresql start
でPostgreSQLを起動しましょう。
※おまけ
pg_ctl を使うには, pg_ctl のシンボリックリンクをこのようにはります。
ln -s /usr/lib/postgresql/9.1/bin/pg_ctl /usr/bin/pg_ctl
これでどこからでも pg_ctl が利用できます。
ただし, pg_ctl は $PGDATA を使うので $PGDATA を使うか, -D オプションで データベースクラスタのディレクトリを指定します。
下記は, pg_ctl でstatusを調べた例です
ex) $PGDATA 設定
export $PGDATA=/var/lib/postgresql/9.1/main
pg_ctl status
ex) -Dオプションで
pg_ctl -D /var/lib/postgresql/9.1/main status
0 件のコメント:
コメントを投稿