忍者ブログ
[208] [207] [206] [205] [204] [203] [202] [201] [200] [199] [198]

DATE : 2017/09/20 (Wed)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2006/11/13 (Mon)

PostgreSQL ではセキュリティ上の観点から、PostgreSQLサーバアプリケーションを管理者アカウントから実行できないようになっています。サーバアプリケーションの中にはデータベースクラスタを初期化する initdb が含まれており、初期化するには非管理者アカウントが必要になります。

しかし、Windows 版 PostgreSQL のインストーラはインストール時に PostgreSQL 用のアカウントを作っています。ログオン画面には表示されませんが、コマンドプロンプトから次のコマンドを入力すると、確かに作られていることが分かります。(「>」はプロンプトを表します)

> NET USER

すると、このアカウントで initdb を実行すればデータベースクラスタを初期化できそうです。

インストール時に作成したアカウント(ここでは「postgres」という名前とします)で initdb を実行するには、方法が2通りあります。

  • コマンドプロンプトのショートカットを右クリック→「別ユーザとして実行(A)...」で postgres としてのコマンドプロンプトを開く
  • コマンドプロンプトで、次のように RUNAS コマンドを実行して postgres としてのコマンドプロンプトを開く(直接 initdb を実行することもできます)
> RUNAS /user:postgres cmd

ただし、上のように開いたコマンドプロンプトでは、PostgreSQL へのパスは通っていません。そのため、まずパスを設定するか、PostgreSQL の bin フォルダをカレントフォルダにしなければなりません。

以上で別アカウントで initdb を使用できるようになりました。

なお、データベースクラスタを構築するフォルダがすでにある場合はあらかじめ消しておき、initdb に作らせるようにします。そうしないと、フォルダに権限がないという理由で initdb の実行が失敗してしまいます。

参考文献

関連記事

(;^ω^)この記事の中でも似たようなことを書いているのですが、PostgreSQL をインストールするたびにこの部分でハマってしまうので、あえて再び取り上げました

PR
●この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
●この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
08 2017/09 10
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)
ブログ内検索
最近の状況
リンク
カレンダー
08 2017/09 10
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)