[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 メーリングリストの案内