ホーム
新着サイト

ニュースサイト
ソフトウェア
フリー・シェアウェア
出版社
情報処理技術者試験
ベンダー試験
求人情報
ノンセクション
Microsoft
Windows
Windows2000
WindowsNT
Windows9x
プログラミング
Visual Basic
C
C++
Java
Delphi
COM/DCOM
Office/VBA
WebDesign
HTML/XML
JavaScript
VBScript
Servlet/JSP
JavaApplet
CGI&SSI
Perl
Active Server Pages
PHP
データベース
Oracle
PostgreSQL
MySQL
UNIX
Linux
FreeBSD
Mac
Server Software
DNS
Mail
Web
Application Server
オブジェクト指向
セキュリティ
ネットワーク

Cool Site
随時更新
ハードウェア
インターネット
テレコミ
プロバイダ
レンタルサーバ
ウェブログ
検索
視力回復情報
ITNAVI.com
別冊(実用)

ITNAVI.com
ガイド



リンク切れ報告、サイト情報お待ちしています"
sawa@itnavi.com


リンクは御自由にどうぞ





PostgreSQLしてみよう


リリース情報
2002/10/01 PostgreSQL 7.2.3 リリース

構築環境
PostgreSQL 7.1
Red Hat Linux 6.2J

PostgreSQL 7.0.2での設定例
PostgreSQL 7.1.2での設定例
PostgreSQL 7.2.3での設定例

インストール編
1.インストールするには
データベース作成編
1.データベースを作成するには
Java編
1.JDBCドライバーを作成するには
2.[SQL Exception]No suitable driverを解消するには
3.[SQL Exception]Connection refused.を解消するには
4.[SQL Exception]Permission denied.を解消するには
運用編
1.ユーザを作成するには
2.POSTMASTER(デーモン)を起動するには
3.テーブル定義を抽出するには
4.Accessからアクセスするには(ODBC)
5.バックアップおよびバージョンアップするには

インストール編

Q.インストールするには
A.
sra.co.jpよりpostgresql-7.1.2.tar.gzをダウンロードします。
(2001/7/6現在、パッチ適用済みpostgresql-7.1.2-patched-20010706.tar.gzがリリースされている。)

1.postgresユーザを追加する
useradd postgres

2.インストールディレクトリを作成する
postgresユーザが書き込めるように設定する。
(sourceを展開するディレクトリは適宜変更する)
# mkdir /usr/local/src/postgresql-7.1/
# chown postgres:postgres /usr/local/src/postgresql-7.1/
# mkdir /usr/local/pgsql
# chown postgres:postgres /usr/local/pgsql

2.プロファイルの設定
~postgres/.bash_profile
PATH="$PATH":/usr/local/pgsql/bin
PG=/usr/local/pgsql
export PGLIB=$PG/lib
export PGDATA=$PG/data
export MANPATH="$MANPATH":$PG/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":$PGLIB

JDBCドライバーを使用するなら下記の環境変数を設定しておきます。 その場合、ANTとJDKは必要です。ApacheでTomcatするを参照してください。
export ANT_HOME=/usr/local/src/jakarta-ant
export JAVA_HOME=/usr/local/jdk1.3.0_01
export PATH=$PATH:$ANT_HOME/bin:$JAVA_HOME/bin
3.インストール
※initdbはrootで実行しない。
JDBCドライバーを使用するなら、configure に --with-java オプションを指定する。
# su - postgres
$ cd /home/postgres/
$ tar xfvz postgresql-7.1.tar.gz
$ cd postgresql-7.1
$ ./configure --enable-multibyte=EUC_JP --with-java
$ make
$ make check
$ make install
$ initdb
This database system will be initialized with username "postgres".
This user will own all the data files and must also own the server process.

Creating directory /usr/local/pgsql/data
Creating directory /usr/local/pgsql/data/base
Creating directory /usr/local/pgsql/data/global
Creating directory /usr/local/pgsql/data/pg_xlog
Creating template1 database in /usr/local/pgsql/data/base/1
DEBUG:  database system was shut down at 2001-04-24 07:51:35 JST
DEBUG:  CheckPoint record at (0, 8)
DEBUG:  Redo record at (0, 8); Undo record at (0, 8); Shutdown TRUE
DEBUG:  NextTransactionId: 514; NextOid: 16384
DEBUG:  database system is in production state
Creating global relations in /usr/local/pgsql/data/global
DEBUG:  database system was shut down at 2001-04-24 07:51:43 JST
DEBUG:  CheckPoint record at (0, 108)
DEBUG:  Redo record at (0, 108); Undo record at (0, 0); Shutdown TRUE
DEBUG:  NextTransactionId: 514; NextOid: 17199
DEBUG:  database system is in production state
Initializing pg_shadow.
Enabling unlimited row width for system tables.
Creating system views.
Loading pg_description.
Setting lastsysoid.
Vacuuming database.
Copying template1 to template0.

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

$ vi /usr/local/pgsql/data/postgresql.conf 
7.0までは、postmaster.opts.defaultにpostmasterの起動オプション設定していたが、7.1からは、$PGDATA/postgresql.conf ファイル一つに設定の記述が行える。
postmaster -S -i」と同じ設定にするにはpostgresql.confファイルを下記の設定する。
tcpip_socket = on
silent_mode = on

$ postmaster &
[1] 9004
$ DEBUG:  database system was shut down at 2001-04-24 07:51:49 JST
DEBUG:  CheckPoint record at (0, 1522200)
DEBUG:  Redo record at (0, 1522200); Undo record at (0, 0); Shutdown TRUE
DEBUG:  NextTransactionId: 615; NextOid: 18720
DEBUG:  database system is in production state

postmasterの自動起動の設定をするなら。
/etc/rc.d/rc.localに以下を追加します。
# Start Postgres
su - postgres -c "/usr/local/pgsql/bin/postmaster"

[参考]
RedHat流にスクリプトを作成するならば、下記の手順を行います。

/usr/local/src/postgresql-7.0.3/contrib/linux/postgres.init.shを、/etc/rc.d/init.d/postgresにコピーする。
※postgres.init.shは、7.1には入っていなかった。
/etc/rc.d/init.d/postgresの該当行を下記のように変更する。

POSTMASTER="postmaster"
  ↓
POSTMASTER="/usr/local/pgsql/bin/postmaster"

PGOPTS="" # -B 256
  ↓
PGOPTS="-D/usr/local/pgsql/data -S -i" # -B 256

# chmod 755 /etc/rc.d/init.d/postgres
# chkconfig --add postgres
# chkconfig --list | grep postgres
postgres        0:off   1:off   2:off   3:on    4:on    5:on    6:off
chkconfigでは、各ランレベルにK15postgres、S85postgresが作成される。
/etc/rc.d/init.d/postgres start でpostmasterの開始、/etc/rc.d/init.d/postgres stopでpostmasterが停止される。


データベース作成編


1.データベースの作成
$ createdb testdb
CREATE DATABASE
SQL文の場合、
CREATE DATABASE <データベース名>
  [ WITH LOCATION = '<配置>' ]
  [ ENCODING = '<エンコーディング名>' ]

2.テーブルの作成
$ psql testdb
Welcome to psql, 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

testdb=# CREATE TABLE testtab (
testdb(#   id   INT,
testdb(#   name VARCHAR(255),
testdb(#   CONSTRAINT test_pk PRIMARY KEY (id));
NOTICE:  CREATE TABLE/PRIMARY KEY will create implicit index 'test_pk' for table 'testtab'
NOTICE:  CREATE TABLE/PRIMARY KEY will create implicit index 'test_pk' for table 'testtab'
CREATE
testdb=# INSERT INTO testtab VALUES(1,'ほげほげ');
INSERT 18735 1
testdb=# SELECT * FROM testtab;
 id |   name
----+----------
  1 | ほげほげ
(1 row)

testtab-# \q


Java編


1.JDBCドライバーを作成するには
# su - postgres
$ cd /usr/local/src/postgresql-7.1/src/interfaces/jdbc/
$ make
------------------------------------------------------------
/usr/local/src/jakarta-ant/bin/ant -buildfile ../../../build.xml -Dmajor=7 -Dmin
or=1 -Dfullversion=7.1 -Ddef_pgport=5432
Buildfile: ../../../build.xml

jar:

call:

prepare:

check_versions:

driver:
Configured build for the JDBC2 edition driver.

compile:
     [copy] Copying 4 files to /usr/local/src/postgresql-7.1/src/interfaces/jdbc
/build

examples:

jar:
      [jar] Building jar: /usr/local/src/postgresql-7.1/src/interfaces/jdbc/jars
/postgresql.jar

checks:

prepare:

compile:

jar:

BUILD SUCCESSFUL

Total time: 4 seconds
------------------------------------------------------------
makeが終わるとjarsディレクトリの下にpostgresql.jarというファイルが作成されているはずです。
変更点は、
PostgreSQL 7.1 リリースノート (JDBC編)を参照してください。
$ cp postgresql.jar $JAVA_HOME/jre/lib/ext
$JAVA_HOME/jre/lib/extにコピーする。
又はCLASSPATHの切ってあるフォルダにコピーします。
TOMCATから使うなら、$TOMCAT_HOME/libが良いでしょう。



2.[SQL Exception]No suitable driverを解消するには
JDBCのURLが誤っている時のExceptionです。
・誤っている例 //の前の:が抜けている
String url = "jdbc:postgresql//localhost:5432/hoge";
[SQL Exception]
java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getConnection(DriverManager.java:473)
        at java.sql.DriverManager.getConnection(DriverManager.java:133)
        at JdbcTest.main(JdbcTest.java:40)
JDBCTM ガイド: 使用の開始を参照しましょう。



3.[SQL Exception]Connection refused.を解消するには
postmaster -S のみで実行されている時のExceptionです。
[SQL Exception]
Connection refused. Check that the hostname and port is correct, and that the po
stmaster is running with the -i flag, which enables TCP/IP networking.
        at org.postgresql.Connection.openConnection(Connection.java:123)
        at org.postgresql.Driver.connect(Driver.java:116)
        at java.sql.DriverManager.getConnection(DriverManager.java:453)
        at java.sql.DriverManager.getConnection(DriverManager.java:133)
        at JdbcTest.main(JdbcTest.java:40)

postmaster -S -i で起動しましょう。
自ホスト以外からの接続を受け付けるには、/usr/local/pgsql/data/pg_hba.confの設定を行う。



3.[SQL Exception]Permission denied.を解消するには
JDBCからの接続ユーザにテーブルへのアクセス権が与えられていない時のExceptionです。
[SQL Exception]
java.sql.SQLException: ERROR:  test: Permission denied.

        at org.postgresql.Connection.ExecSQL(Connection.java:393)
        at org.postgresql.jdbc2.Statement.execute(Statement.java:273)
        at org.postgresql.jdbc2.Statement.executeQuery(Statement.java:54)
        at JdbcTest.main(JdbcTest.java:49)

psql よりアクセス権を設定しましょう。
(hogeユーザにtesttabテーブルへのアクセス権を与える例)
$ psql testdb
Welcome to psql, 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

testdb=# GRANT ALL ON testtab TO hoge;
CHANGE
testdb=# \q


運用編


1.ユーザを作成するには
CREATE USER <ユーザ名>
  [ WITH PASSWORD <パスワード> ]
  [ CREATEDB | NOCREATEDB ]
  [ CREATEUSER | NOCREATEUSER ]
  [ IN GROUP <グループ名> [, ...] ]
  [ VALID UNTIL <有効期限> ]

(hogeユーザをパスワードpasswordで作成する例)
$ psql testdb
Welcome to psql, 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

testdb=# CREATE USER hoge WITH PASSWORD 'password';
CREATE USER
testdb=# \q
登録されているユーザは
SELECT * FROM pg_user;
で確認することが出来る。
createuserコマンドというのもある。

削除は、
DROP USER <ユーザ名>


2.POSTMASTERを起動するには

$ postmaster -S -i
PostgreSQL管理者ユーザで行います。(postgres)
-S 端末からPOSTMASTERを切り離し、デーモンとして動かす。
-i 他のホストから接続の許可
自ホスト以外からの接続を受け付けるには、/usr/local/pgsql/data/pg_hba.confの設定を行う。


3.テーブル定義を抽出するには

psqlで見る場合
$ psql testdb
Welcome to psql, 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

testdb=# \d
     List of relations
  Name   | Type  |  Owner
---------+-------+----------
 testtab | table | postgres
(1 row)

testdb=# \d testtab
           Table "testtab"
 Attribute |     Type     | Modifier
-----------+--------------+----------
 id        | integer      | not null
 name      | varchar(255) |
Index: test_pk

testdb=# \q

pg_dumpで一括出力の場合
$ pg_dump testdb -s
\connect - postgres
CREATE TABLE "testtab" (
        "id" int4 NOT NULL,
        "name" character varying(255),
        PRIMARY KEY ("id")
);
REVOKE ALL on "testtab" from PUBLIC;
GRANT ALL on "testtab" to "hoge";


4.Accessからアクセスするには

ODBCドライバーを使います。
まず
PostgreSQL ODBC DriverのオフィシャルWEBサイトからODBCドライバーをダウンロードします。
postdrv.exeを実行するとインストーラが走りインストールされます。
次に、インターウィズ PostgreSQL ODBC Driver 日本語版よりODBC Driver 日本語版をダウンロードし、Windowsのシステムディレクトリにインストールされたpsqlodbc.dllに上書きします。
そしてコントロールパネルのデータソース(ODBC)よりODBCの設定をします。


5.バックアップおよびバージョンアップするには

psql -l でデータベースの一覧が見れる。
$ psql -l
        List of databases
 Database  |  Owner   | Encoding
-----------+----------+----------
 template1 | postgres | EUC_JP
 testdb    | postgres | EUC_JP
(2 row)
pg_dumpでデータベースごとにバックアップする場合
$ pg_dump db_name > db.out
そして上記バックアップより復元する場合
$ createdb db_name
$ psql -e db_name < db.out
バージョンアップの場合は、pg_dumpallコマンドでデータベースクラスタ全体の バックアップを保存します。
$ pg_dumpall -o > db.out
そして上記バックアップより復元する場合
$ psql -e template1 < db.out
指定するDB名は、必ずtemplate1にすること。








PostgreSQL


先頭へ戻る トップページへ戻る


Copyright(c) 1999-2017 ITNAVI.com