Welcome! page:no03/resbbs/resbbs.php | |
PostgreSQL | |
by:大阪演劇情報センター + 未知座小劇場 | |
home:topへ server library:top へ |
\n");
}
else
{
print ("はじめまして。よろしかったらご意見などお聞かせ下さい。 \n"); } ?> |
PostgreSQL(ポストグレエスキューエル)はカリフォルニア大学バークレ校のデータベースの研究から生まれたそうです。 Ingres(1997--1985) → Postgres(1986--1994) → Postgres95(1994--1995) → PostgreSQL(1996-- ) PostgreSQL(わたしの環境にインストールされているのはバージョン 7.1.2-6)は、 プロセス構成としてクライアント・サーバ構成をとっています。 サーバではpostmasterというプロセスが常時稼働。クライアントプロセスの接続要求を待ち、 要求に応じて1ユーザ1プロセスのサーバプロセスが起動し、要求が処理されます。 postmasterが動いていないとPostgreSQLは使えないということです。 使用の実際はPostgreSQLが作成した、あるデータベースの特定のテーブルと対話するには、SQL言語を使用するのですが、 もちろんここで対話を行おうとしているデータベースもテーブルもSQLコマンドを使って作成されます。 ここでは実際にデータベースを作成してみるのがいいのですが、こちらの力量(HTMLタグの知識不足、RDBMSへの無知) に規定されすぐさま何かが報告できるというものではないので、まず理解を深めるしかありません。 なお、わたしの思いですが、このPostgreSQLを学習しようとするのはPHP言語で対話するためということになります。 Webアプリケーションによるデータベース操作、といえば少しは具体的になるでしょうか。 またもう一つはWindowsのGUI環境から、LAN経由で直接PostgreSQLにアクセスしてデータを使うことを目論見んでいます。 WindowsからのアクセスはPostgreSQL用のODBC(Open Database Connectivity)ドライバが必要になる、ということまでは認識していというのが現状です。 あれやこれや色々出てきそうですが以下は、上記意図にそってするPostgreSQLあれこれです。(2002.01.17) |
">mailto:webmaster PHP PostgreSQL MySQL サンプルスクリプト |
$ rpm -qa php-pgsql
$ ps aux | grep postgres
postgres 6xx 0.0 0.3 7580 1712 ? S 17:10 0:00 /usr/xxx/postmast
postgres 6xx 0.0 0.3 8572 1700 ? S 17:10 0:00 postgres: stats b
postgres 6xx 0.0 0.3 7604 1724 ? S 17:10 0:00 postgres: stats c
root 9xx 0.0 0.1 2540 732 ttyp0 R 17:13 0:00 grep postgres
# su - postgres
$ pg_ctl status
# su - postgres $ psql -l |
で「List of databases」が表示されれば PostgreSQLが稼働していることになります。
サーバ機の再起動等で PostgreSQLが自動起動するには、
# cd /etc/rc.d/rc3.d # ln -s ../init.d/postgresql S89postgresql # cd ../rc5.d # ln -s ../init.d/postgresql S89postgresql |
としてレベル3,5で起動させます。
[追記] なお、注記というほどのことではありませんが、筆者の場合、期せずrebootなどを繰り返していると、
ランレベルが壊れpostgreSQLが起動しないことが、多々ありました。この場合、上記コマンドでエイリアスを作成し直せばいいのですが、
それは「K15postgresql」を削除して、新たに「S89postgresql」を作成する事になります。この手間をさけるには、以下のコマンドです。(04.03.31)
# chkconfig postgresql on |
host all 0.0.0.0 0.0.0.0 trust (すべての接続がok)
host all 192.168.0.1 255.255.255.0 turst (192.168.0.xの接続がok)
host all 192.168.2.1 255.255.255.255 turst (192.168.2.1だけの接続ok)
silent_mode = on (postmaster -S オプションに等しい) tcpip_socket = on (postmaster -i オプションに等しい) syslog = 2 (端末とsyslogに出力) |
/etc/syslog.conf (ログの設定)
以下を変更し、追記した。
*.debug;mail.none;authpriv.none/var/log/messages local0.* /var/log/postgres |
/etc/httpd/php.ini (PHP関係の設定)
以下を追記した。
extension=pgsql.so |
postmasterの起動と再起動
# su - postgres $ pg_ctl -w start $ pg_ctl stop |
このpg_ctlはPostgreSQL 7.0から導入されたpostmasterの管理ツール。
# su - postgres |
になるか、
# passwd postgre |
としてパスワードを設定してpostgresでログインする事になる。以下は $ postgresでの作業である。
$ createdb yubin |
これで /var/lib/pgsql/data/ に「yubin」DBが作成された。
$ createuser ユーザ名 |
この createuserコマンドを使えるのはpostgreSQLのスーパユーザであるpostgresだけです。
$create table yubin_tab ( new_zip char(7), old_zip char(5), address_1 varchar(128), address_2 varchar(128), address_3 varchar(128) ); |
この内容のファイルを次のコマンドで実行すると「yubin」DBに「yubin_tab」が作成される。
# psql yubin < /var/lib/pgsql/yubin_tab.create |
【注】PgAccess http://www.flex.ro/pgaccess/
host all 127.0.0.1 255.255.255.255 trust (自身は接続がすべてok) host takodb ***.***.***.268 255.255.255.255 password passwd host hanakodb ***.***.***.188 255.255.255.255 password passwd |
上???よう??/var/lib/pgsql/data/pg_hba.confの設定がなっている場合、外部からの接続をデータベース利用者にパスワードをあて、
制限をしている。takodbデータベースには***.**.**.268 はアクセスできる。hanakodbデータベースには ***.**.**.188 がアクセスできるだけである。
この場合、/var/lib/pgsql/data/ にpasswd ファイルを置き、そのファイルでユーザ認証を行う。
passwdファイルは postgresユーザのコマンドで作成する。
$ cd /var/lib/pgsql/data $ pg_passwd passwd File "passwd" does not exist. Create? (y/n): y //yでpasswdファイルができる。初回だけ Username: tako //利用ユーザ名 New password: //パスワードを入力(エコーされない) Re-enter new password: //パスワードを入力(エコーされない) |
テーブルのアクセス制限を設定することでさらに細かく制限をかけることができる。
なお、パスワードの変更は、
$ alter user tako with password "iitenki" |
のコマンドでパスワードが iitenki に変わる。
(02.11.02)
# su - postgres $ pg_dumpall -o > ファイル名 //一括して全てのデータベースのバックアップです。postmasterは稼働中です $ mv -r pgsql pgsql.bak //面倒だったのでディレクトリ(フォルダ)ごと避難しました $ pg_ctl stop //PostgreSQL(postmaster)の停止 # turbopkg //一連の作業 |
これで、インストールは終りです。復旧になるのですが、わたしの場合、サーバ機の再起動ができないというのが条件でした。
# su - postgres $ initdb //初期化です。これで /var/lib/pgsql が新規にできました $ pg_ctl -w start //PostgreSQL(postmaster)の起動 $ psql -e template1 < ファイル名 //データベースが作成再現されデータが流し込まれます |
これでユーザも含めてすべてが復旧したことになります。いろいろ試したのですが結果的に復旧、ということになります。
(02.11.21)
[ 注記 ]
例えば、メジャーバージョンアップを /var/lib/pgdql を残したまますると困ったことになります。initdbコマンドで文句がでます。
だからといって /var/lib/pgdql を避難すると su - postgres がききません。
この場合だと、ここでわたしは、 pgsql を pgsql.bak とし再起動しました。但し、postgresqlが自動起動するようにしての再起動です。
サーバが立ち上がり、
# ps aux | grep postgres postgres 827 0.0 0.2 7516 1688 ? S 16:20 0:00 /usr/bin/postmast ............略.................... |
と、同等の文字列がみえれば正解です。
新しく /var/lib/pgdql が作成されているので、ここでデータを流し込めば復旧です。(02.11.23)
《 ■ 参照URL ※サイト内参照ページ 引用、参照書籍 ■ 》 |
PostgreSQL |
日本PostgreSQLユーザ会 |
PostgreSQL7.1日本語マニュアル |
連載記事 「PostgreSQLで作るLinuxデータベース」 |
※ 稼働事例01 (2002.11.21 記) |
※ 稼働事例02 (2002.11.21 記) |
※ PostgreSQL とMySQLのコマンド対応表 (2002.11.21 記) |