[pgsql-jp: 33435] 一時解決。その他の問題

Yasuharu Ninomiya ninomii @ fml.nirs.go.jp
2004年 6月 30日 (水) 18:04:44 JST


皆様色々とアドバイス有り難うございます。
Unixの成書をよみ、すこしトラブルの原因が判った気がします。

途中までうまくいきました。
失敗の原因の1つは
毎回
Export PATH=$PATH:/usr/local/pgsql/bin
を施行していなかった為のようです。
成功したところは以下のところまでです。
g4almi:~ ninomiya$ su -l postgresql

Password:

g4almi:~ postgresql$ export PATH=$PATH:/usr/local/pgsql/bin

g4almi:~ postgresql$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l
logfile start
g4almi:~ postgresql$ ps

 PID  TT  STAT      TIME COMMAND

 387 std- S     0:00.12 /usr/local/pgsql/bin/postmaster -D
/usr/local/pgsql/d

 391 std- S     0:00.00 postgres: stats buffer process

 392 std- S     0:00.04 postgres: stats collector process

 965 std  S      0:00.03 -su

g4almi:~ postgresql$

しかし、以前にUser Access and Authenticationの設定で、
Emacs /usr/local/pgsql/data/pg_hba.conf
でtrustをmd5にかえた後に終了方法を知らなかったので、
以前に施行した

以前の操作状況説明start
sh-2.05b# mkdir /usr/local/pgsql/data

sh-2.05b# chown postgresql /usr/local/pgsql/data

sh-2.05b# su -l postgresql

 

Databaseを初期化する。

g4almi:~ postgresql$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

略

Success. You can now start the database server using:

 

    /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

 

g4almi:~ postgresql$

成功

 

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

環境変数設定:成功

 

PostgreSQL server start準備;

g4almi:~ postgresql$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l
logfile start

postmaster successfully started

成功

g4almi:~ postgresql$ createdb test

CREATE DATABASE

g4almi:~ postgresql$

成功

 

g4almi:~ postgresql$ psql test

Welcome to psql 7.4.3, the PostgreSQL interactive terminal.

 

Type:  ¥copyright for distribution terms

       ¥h for help with SQL commands

       ¥? for help on internal slash commands

       ¥g or terminate with semicolon to execute query

       ¥q to quit

 

test=# create table foo (name varchar, foo_id serial);ここでreturn

NOTICE:  CREATE TABLE will create implicit sequence "foo_foo_id_seq" for
"serial" column "foo.foo_id"

CREATE TABLE

test=# insert into foo (name) values ('Liz'); ここでreturn

INSERT 17151 1

test=# insert into foo (name) values ('Jason'); ここでreturn

INSERT 17152 1

test=#

以上でinstallおよび準備終了。

 


後はUser Access and Authentitication(つまりセキュリティー設定)へ。

g4almi:~ ninomiya$ su -l postgresql

(PostgreSQLはpostgresqlユーザーしか使用権限がないのでこれが必須と思われる。)

Password:

g4almi:~ postgresql$ emacs /usr/local/pgsql/data/pg_hba.conf

TYPE  DATABASE    USER        IP-ADDRESS       IP-MASK           METHOD

 

local   all         all                                            trust

# IPv4-style local connections:

host    all        all         127.0.0.1        255.255.255.255   trust

# IPv6-style local connections:

host    all        all         ::1
ffff:ffff:ffff:ffff:ffff:ffff¥

:ffff:ffff       trust

このMethodの3カ所のtrustをすべてmd5に書き換えて、control&X, control&S

control&X, control&Cで保存し、

g4almi:~ postgresql$ cd /usr/local/pgsql

g4almi:/usr/local/pgsql postgresql$psql testしたが、エラー多発。
以前の操作状況説明end


この後、そのままにしていました。
その為、
g4almi:~ postgresql$ psql test
psql: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
g4almi:~ postgresql$ creardb test2
-su: creardb: command not found
g4almi:~ postgresql$ createdb test2
createdb: could not connect to database template1: could not connect to
server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
g4almi:~ postgresql$
とエラーになっているように思えます。

PostgreSQL 管理者用ガイドの
Chapter 6. クライアント認証
6.2.2. パスワード認証
を読んでみました。
するとpsqlが起動したときに
Test=# alter user postgresql with password '....';
としていないとpasswordはNULLになり常にpassword認証に失敗するとあります。
一応、emacs /usr/local/pgsql/data/pg_hba.confでmd5をtrustに戻しましたが、
以前の設定がいきているのか
g4almi:~ postgresql$ psql test
psql: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
とエラーが表示されてしまいます。
psqlの起動ができないので、解除方法が判りません。

環境変数等の設定が適切ではないのかと思い、
「PC UNIXユーザーのためのPostgreSQL完全攻略ガイド」石井達夫著 技術評論社
の本の記載に従い、
g4almi:~ postgresql$ emacs ~/.bashrc

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

POSTGRES_HOME=/usr/local/pgsql

PGLIB=$POSTGRES_HOME/lib

PGDATA=$POSTGRES_HOME/data

MANPATH=$MANPATH:$POSTGRES_HOME/man

 上記:本によっては “  “で囲まない場合と囲む場合が書いてあり違いが不明。
PATH=”$PATH”:/usr/local/pgsql/bin
MANPATH=”$MANPATH”:$POSTGRES_HOME/man


また、同テキストに従い、psqlとpg_ctlに関して次の操作を行いましたが、
不適切なようでした。
g4almi:~ postgresql$ pg_ctl stop

pg_ctl: no database directory specified and environment variable PGDATA
unset

Try "pg_ctl --help" for more information.

g4almi:~ postgresql$ pg_ctl -w start

pg_ctl: no database directory specified and environment variable PGDATA
unset
Try "pg_ctl --help" for more information.

これは兵藤さんがご指摘の
・postmasterは強制終了されてしまっていてロックファイルが残っている
 → /usr/local/pgsql/data/postmaster.pid の有無は確認されましたか ?
   /usr/local/pgsql/data/postmaster.pid の所有者は誰でしょうか ?
   (不正な操作をした結果、書き換えできない状態のロックファイルを
    作っていないかを確かめるのも、初心者的には定石です ^^;)
に相当するのではないかと思い、
g4almi:~ postgresql$ cd /usr/local/pgsql/data
g4almi:/usr/local/pgsql/data postgresql$ ls -a
.       ..
と施行しましたがpostmaster.pidはないようです。
(ただ、ロックファイルはどのように表示されて、その場合どう対処すれば良いので
しょうか?)


念の為、もう一度psqlとpg_ctlを起動してみましたが
g4almi:/usr/local/pgsql/data postgresql$ cd ~
g4almi:~ postgresql$ psql
psql: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
g4almi:~ postgresql$ pg_ctl
pg_ctl: no operation mode specified
Try "pg_ctl --help" for more information.
g4almi:~ postgresql$ pg_ctl -w start
pg_ctl: no database directory specified and environment variable PGDATA
unset
Try "pg_ctl --help" for more information.
g4almi:~ postgresql$

操作が不適切のようです。

何をどうすれば良いのか全く判らなくなりました。
いつも初歩的なことばかりお聞きして申し訳ありません。
何かお気づきのことがございましたらお教え頂けないでしょうか。
よろしくお願い致します。

二宮




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