DATE : 2007/06/16 (Sat)
Windows 版 PostgreSQL の場合、データベースファイルを移動した際などは、PostgreSQL サーバのサービスを登録し直す必要があります。本記事では、その際に気をつけることなどをメモしてあります。
なお、本記事の操作を行うには管理者権限が必要となります。
サービスの削除
まず、すでに登録されている PostgreSQL サービスを削除する必要があります。削除するには、次のコマンドを実行します。「<...>」の部分は該当する名前などに置き換えてください。
pg_ctl unregister -N <削除するシステムサービス名>
「システムサービス名」とは、サービスの一覧に表示されている名前です。
なお、サービスの稼動中にこのコマンドを実行した場合、サービスが停止するまで一覧から削除されません。
サービスの登録
サービスを登録するには、次のコマンドを実行します。ここでは、データベースファイルを移動した状況を仮定しています。以下のコマンドは、実際には1行です。
pg_ctl register -N <登録するシステムサービス名> -U <サーバを起動するアカウント名> -P <サーバを起動するアカウントのパスワード> -D <データベースファイルへのパス>
PostgreSQL では、セキュリティ上の観点から、PostgreSQL サーバは PostgreSQL 専用のアカウントでの実行を推奨しています。そのため、サーバを起動するためのアカウントをここで指定します。
しかし、ここでアカウントを指定してしまうと、入力時にアカウントのパスワードが画面上に表示されてしまいます。また、オプションを間違えて指定した場合、パスワードなどがサービスのプロパティから丸見えになってしまいます。PostgreSQL 専用のアカウントでなくてもサーバは起動できるため、なかなか気付けません。それが嫌な場合は、この時点ではアカウントを指定せず、あとでサービスの一覧からアカウントを指定するようにします。
サービスの起動
あとは、PostgreSQL サービスを起動するだけです。登録を終えた直後であれば、以下のように、コマンドプロンプトから起動しても良いかもしれません。
net start <PostgreSQL のシステムサービス名>
参考文献
- pg_ctl (PostgreSQL 8.2.4文書)
- なぜPostgreSQLを実行するために管理者以外のアカウントが必要なのですか? (Windowsネィティブ環境でのPostgreSQLのインストールと実行についてのよくある質問とその回答)