ホーム
新着サイト

ニュースサイト
ソフトウェア
フリー・シェアウェア
出版社
情報処理技術者試験
ベンダー試験
求人情報
ノンセクション
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してみよう


構築環境
PostgreSQL 7.0.2
Red Hat Linux 6.2J

PostgreSQL 7.1での設定例
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)

インストール編

Q.インストールするには
A.
1.postgresユーザを追加する
useradd postgres

2.インストールディレクトリを作成する
postgresユーザが書き込めるように設定する。
# mkdir /usr/local/src/postgresql-7.0/
# chown postgres:postgres /usr/local/src/postgresql-7.0/
# 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 LD_LIBRARY_PATH="$LD_LIBRARY_PATH":$PGLIB

3.インストール
※initdbはrootで実行しない。
# su - postgres
$ cd /home/postgres/
$ tar xfz postgresql-7.0.2.tar.gz
$ cd postgresql-7.0.2/src
$ ./configure --enable-multibyte=EUC_JP
$ make all
$ make install
$ cd ../doc
$ 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 database system directory /usr/local/pgsql/data
Creating database system directory /usr/local/pgsql/data/base
Creating database XLOG directory /usr/local/pgsql/data/pg_xlog
Creating template database in /usr/local/pgsql/data/base/template1
Creating global relations in /usr/local/pgsql/data/base
Adding template1 database to pg_database

Creating view pg_user.
Creating view pg_rules.
Creating view pg_views.
Creating view pg_tables.
Creating view pg_indexes.
Loading pg_description.
Vacuuming database.

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 start

$ chmod +w /usr/local/pgsql/data/postmaster.opts.default
$ vi /usr/local/pgsql/data/postmaster.opts.default
postmaster.opts.defaultにpostmasterの起動オプション設定しておくこともできます。
-S -i

$ pg_ctl -w start
Waiting for postmaster starting up...DEBUG:  Data Base System is starting up at
Tue May 30 01:01:34 2000
DEBUG:  Data Base System was shut down at Tue May 30 01:01:13 2000
DEBUG:  Data Base System is in production state at Tue May 30 01:01:34 2000
done.
postmaster successfully started up.

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


データベース作成編


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'
CREATE
testdb=# INSERT INTO testtab VALUES(1,'ほげほげ');
INSERT 18935 1
testdb=# SELECT * FROM testtab;
 id |   name
----+----------
  1 | ほげほげ
(1 row)

testtab-# \q


Java編


1.JDBCドライバーを作成するには
# su - postgres
$ cd /usr/local/src/postgresql-7.0.2/src/interfaces/jdbc/
$ make
------------------------------------------------------------
Due to problems with some JVMs that dont return a meaningful
version number, we have had to make the choice of what jdbc
version is built as a compile time option.

If you are using JDK1.1.x, you will need the JDBC1.2 driver.
To compile, type:
  make jdbc1 jar

If you are using JDK1.2 (aka Java2) you need the JDBC2.
To compile, type:
  make jdbc2 jar

Once you have done this, a postgresql.jar file will be
produced. This file will only work with that particular
JVM.

------------------------------------------------------------
ということで、postgreSQL7.0からはJDK1.1かJDK1.2を指定する必要があるようです。
$ make jdbc2 jar
makeが終わるとpostgresql.jarというファイルが作成されているはずです。
$ 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の設定をします。






PostgreSQL


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


2001年3月23日更新

Copyright(c) 1999-2017 ITNAVI.com