[pgsql-jp: 33397] Re: install 成功、security 設定と起動失敗。

Koichi Hyodo sio-0 @ rh.to
2004年 6月 27日 (日) 02:06:42 JST


兵藤です

以下では、/usr/local/pgsql にインストールされたシステムを
利用しようとしていると仮定しています.

> From: Yasuharu Ninomiya <ninomii @ fml.nirs.go.jp>
> Date: Sat, 26 Jun 2004 11:25:33 +0900
> Subject: [pgsql-jp: 33388] install 成功、security 設定と起動失敗。

> g4almi:/usr/local/pgsql postgresql$psql testしたが、ダメ

同じ自然科学を相手にする者として最初にちょっと..

ダメという表現が目に付きますが感覚的な表現に思えます。

それから、原因と結果から内部で起きていることを判断するのは
自然科学も工学も同じです。人が作ったものであるプログラムでは、
内部で起きていることをエラーメッセージから読みとることができます。
エラーメッセージを読みとったあとで確認のためにいくつかの定石的な
手順があるのも自然科学と同じです。


さて、ここのエラーメッセージが提示されていませんが
以下の2点は確認済み(理解されている)でしょうか ?

・psqlはpostmasterに接続するためのクライアントプログラムです
 従って、それを実行する前にまずpostmasterが動いている必要があります

・psqlコマンドは(そこに)存在した(実行できた)でしょうか ?


このような提示方法だと操作前にどのような状態だったのかわかりません。
原因と結果の提示は、論文を書くときと一緒だと考えてください。
・・・というわけで、メールを最後まで読んであることに気づきましたが
   それは順にこのメールを読んでいただくと書いてあります :-p


> 少しやり方かえて下記のようにやったが、ダメ;
> 
> g4almi:/usr/local/pgsql postgresql$ /usr/local/pgsql/bin/pg_ctl -D
> /usr/local/pgsql/data -l logfile start

エラーメッセージを読んで、試したことを記載した方がいいと思います。
試すことを思いつくことができなかったのであれば、以下を確認してみて
みてください。

> pg_ctl: Another postmaster may be running.  Trying to start postmaster
> anyway.

操作の過程でpostmasterを既に起動していたのでしょうか ?
postmasterは起動する前にロックファイルの有無を確認して
二重に起動しないようにしています。

可能性として
・postmasterは実は稼働している
 → Unixでは、実行中のプログラム(プロセス)はプロセスリストで
   確認することができます。それがpsコマンドで確認するという
   ことの意味です。

・postmasterは強制終了されてしまっていてロックファイルが残っている
 → /usr/local/pgsql/data/postmaster.pid の有無は確認されましたか ?
   /usr/local/pgsql/data/postmaster.pid の所有者は誰でしょうか ?
   (不正な操作をした結果、書き換えできない状態のロックファイルを
    作っていないかを確かめるのも、初心者的には定石です ^^;)

postmasterがどこでどのように起動されるのか把握できていなければ
まずそれを把握することに努めて下さい。

> /usr/local/pgsql/bin/pg_ctl: line 341: logfile: Permission denied
> pg_ctl: cannot start postmaster
> Examine the log output.

Permission deniedとメッセージが出たときには
実行者とファイル所有者を確認するのが定石です。


> g4almi:/usr/local/pgsql postgresql$ psql test
> -su: psql: command not found
> 
> 何が悪いのか原因不明。

Unixの非常に初歩的な概念のひとつに、コマンドのパスというものがあります。
この概念を理解することはUnixを使うには必須条件です。環境変数の作用が
理解できていないうちは PATH 環境変数に頼らず
パスを指定して実行するように心がけてください。

psql であれば/usr/local/pgsql/bin/psql です。
あるいは /usr/local/pgsql で作業するのなら bin/psql です。

Unixの基本操作は数時間あれば理解できるとおもいます。
成書を読む時間を捻出することを強くお勧めします。
成書というのは安直本ではなく学部生用のテキストになるようなものです。




以下、参考まで。

> Mac OSX System PreferencesのAccountsでNew user設定;postgresql
> (何故か、postgresは設定不能だった。Usersにpostgres既にあり消せない)

Mac OS X に標準状態で mysql はありますが postgres はないはずです。
どなたかが作ったのでしょうか。


>   /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
> or
>   /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
> 成功

ここで起動した postmaster ( pg_ctl も同じ )は
いつどうやって停止させたのでしょうか。


> export PATH=$PATH:/usr/local/pgsql/bin

あれ.. ? postgresql ユーザで PATHを設定されていたのですか?
それは毎回設定されているのでしょうか ?


最後に。。

以下引用を省略しますが、そこにpostmasterを起動したことも、
その直後にpgsqlを起動してSQLコマンドを実行できたことも書いてありました。
そのことにメール冒頭で言及されていたらわかりやすかったとおもうのです。

最初の質問を書き直すと、
「postmasterを起動して、pgsqlを実行してSQLコマンドを実行できることを
 確認した。その詳細はメール末尾に示す。次にpg_hba.confを以下のよう
 に書き換えてmd5認証するようにしたが、(どうなったかを書く)」
となるでしょうか。この一番肝心なところでどんなエラーか書いてないのは
困ります。

PostgreSQL 管理者用ガイドの
Chapter 6. クライアント認証
6.2.2. パスワード認証

を参照してください。そこにmd5認証を使うためにパスワードを準備する
方法が記載されています。事前にパスワードを登録したでしょうか ?

また、ユーザ名とパスワードを登録する前に
psqlコマンドがどのようなユーザ名で接続を試みるかについて

PostgreSQL リファレンスマニュアルの
II. PostgreSQL クライアントアプリケーション
psql -- PostgreSQL 対話的ターミナル
 使用方法
  データベースへの接続

の項目を読んでみてください。





pgsql-jp メーリングリストの案内