随時更新
リンク切れ報告、サイト情報お待ちしています"
sawa@itnavi.com
リンクは御自由にどうぞ
|
リリース情報
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を起動するには
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コマンドでデータベースクラスタ全体の
バックアップを保存します。
そして上記バックアップより復元する場合
$ psql -e template1 < db.out
|
指定するDB名は、必ずtemplate1にすること。
PostgreSQL
先頭へ戻る
トップページへ戻る
|