しいしせねっとEDiCube MW【300x75】 Amazon.co.jp アソシエイト

[SSL接続] [JDBCドライバ]

PostgreSQLのいろいろ

PostgreSQL に関するいろいろをまとめています。 正しくアクセス制限ができるまでの手順みたいなものです。
  1. PostgreSQLとは何か
    1. 構造
  2. インストール
    1. PostgreSQL 7.0のインストール
    2. PostgreSQL 7.1のインストール(工事中)
    3. PostgreSQL 7.2のインストール
    4. PostgreSQL 7.3のインストール
    5. PostgreSQL 7.4のインストール (半自動)
    6. PostgreSQL 8.xのインストール
    7. VineLinux標準のPostgreSQL
  3. ユーザの作成
  4. データベースの作成
    1. パスワードの設定
    2. アクセス制限
    3. SSL接続
  5. 入門 (メモ)
    1. テーブルの作成
  6. JDBCドライバの国際化
  7. SSL接続
とりあえずここに書く・・・。
initdb が終わったあとからのことをこっちでまとめていく予定。予定は未定。

1.PostgreSQLとは何か

データベースのソフトウェアです。
データベースとは何かというと、データを保存しておくためのものだったり。さまざまな条件をつけて検索するものだったりします。郵便番号辞書とか、ユーザー一覧とか、住所録とかがデータベース的です。
その中でもPostgreSQLは、クライアント/サーバ型のデータベース・システムです。コマンド1つで実行するものではなくて、サーバソフトウェアとクライアント・ソフトウェアに分かれて動作します。クライアント/サーバ型ではないものの例としては、CD-ROM的ななんとかデータベースという特定のもののがありますね。クライアント/サーバ型の利点は簡単にいうと、複数のソフトウェアから同時にひとつのデータベースにアクセスできることです。

1.1 構造

ファイル構造ではなく、システム/データの構造から。

こんな感じです。クラスター(データ用ディレクトリ)1つが postmaster 1つと対応します。
postmaster を複数駆使することで、複数のクラスターを管理できますが、1つのpostmaster でも複数のデータベースを管理できるので、特殊な事情がない限りは1つだけにしておきましょう。
JDBC等が接続するのは、データベースの単位です。Apache のバーチャルドメインのようなもの、です。
次の2.1~2.5 PostgreSQLのインストール では、クラスター部分まで作成します。次にユーザーを作成し、ユーザーの権限でデータベースを作成していきます。

2.インストール

OpenSSLのセキュリティFixが2003.9.30にでています。OpenSSL付きでインストールした場合はPostgreSQLも再構築が必要かもしれません。

  1. PostgreSQL 7.0のインストール
  2. PostgreSQL 7.1のインストール(工事中)
  3. PostgreSQL 7.2のインストール
  4. PostgreSQL 7.3のインストール
  5. PostgreSQL 7.4のインストール
  6. PostgreSQL 8.1のインストール

2.7. Vine 的標準のPostgreSQL

VineLinux にもとから入っている PostgreSQL は、EUC_JPで initdb まで完了したもののようです。たぶん。
VineLinux 2.6 には、 PostgreSQL 7.2.3 が入っていました。
データ用のディレクトリ($PG_DATA)は、 /var/lib/pgsql/data かもしれません。
/etc/rc.d/init.d/pgsql でstart stop ができます。最初に実行すると、initdbを実行し、初期設定までしてくれます。

参考

3. ユーザーの作成

PostgreSQL には、それ専用のユーザ管理がされているので、PostgreSQLのユーザをつくる必要があります。
最初は postgres というユーザがあるかもしれません。
Linux/UNIXのユーザ名 postgres でコマンドを実行すれば、PostgreSQLの対応するユーザー postgres でコマンドが実行されるので、管理するときはユーザー postgres で実行しましょう。
ユーザをつくるコマンドは createuser です。まずは自分用のアカウントから作ってみましょう。

# su - postgres
$ createuser username

または

$ createuser username -U postgres

いろいろ聞いてくるので、答えていけばOKです。
データベースを作れるようにするか? とか 別のユーザを作れるようにするか? というようなことを聞いてきます。
postgres ユーザー以外に自分のユーザー権限でも管理したい場合は、どちらもyと答えておけばいいでしょう。
ユーザが作れたら、UNIXの postgres ユーザーはしばらく必要ないので自分のユーザに戻して続きをしましょう。

4.データベースの作成

データベースをつくるコマンドは createdb です。
createdb のオプションのいくつか
-E 文字コードを指定します。Java から利用する場合は、UNICODE を指定してみたいところですが、 psql コマンドから処理する場合も Unicode (UTF-8) で対応しなければならなくなるので、コマンドラインから psql をよく使う場合はEUC-JPにしておくのが無難です。注意しましょう。
JDBCドライバはどちらの文字コードでも同じように使えますが、日本語以外の文字を扱う場合や、WIndows-31J(MS932)とShift_JISやEUC-JPの文字コードの細かな違いが気になるというような場合は、psqlコマンドの文字コードの問題があるものの、UNICODEにする方がいいかもしれません。データベースは複数作ることもできるので、うまく使い分けましょう。

psql コマンドの使い方

psql は、PostgreSQLのデータベースにコマンドベースでアクセスするための簡単なクライアントソフトウェアです。
psql [オプション]  [データベース名 [ユーザ名]]
 オプション(例)
  -h ホスト名を指定して接続する
  -d データベース名
  -U ユーザ名

接続すると DB名 $ とか DB名# というプロンプトがあらわれます。
ここで、SQLコマンドや、pgsql のコマンドを実行できます。
pgsqlのコマンドは、\ を最初につけます。
\h [コマンド名/SQL文] ヘルプを表示する
\l データベース一覧を表示する
\d テーブル一覧を表示する
\q psql を終了する
などがあります。

5. パスワードの設定

ユーザ、データベースを作ったら、次はパスワードを設定します。
初期状態ではパスワードなしでもアクセスできるのですが、このままでは危険なので、あとからパスワードがないとアクセスできないように設定します。
psql コマンドでデータベースに入り、次のコマンドでパスワードを変更できます。

alter user username password 'password';

6. アクセス制限

(予定)
インターネットに公開しているサーバなどなどに置く場合、外からデータベースが丸見え、なんていうのでは嫌ですからね。
PostgreSQL では、$PG_DATA ディレクトリ内のpg_hba.conf というファイルを設定することでアクセス制限が可能です。
その他にも ipchains、iptables 等の各種設定をしておきましょう。postmaster が -i オプションを付けたときに使っているポート番号は 5432 です。
pg_hba.conf には、次のような行をつくります。
いつからかわかりませんが、認証プロトコルにmd5 が追加されているようです。7.2以前の古いjavaクライアントはmd5に対応していないようなので crypt または password にすることもできます。

local all md5
host all 127.0.0.1 255.255.255.255 md5
host all 192.168.0.0 255.255.255.0 md5

# 管理者用のパスワードを設定後に、この項目を変更しないといけません。

参考

7. SSL接続

[PostgreSQLでSSL]

8.入門?

SQLの入門からすればいいかな? 省略?

PostgreSQL 8系の型変換

[JDBC]へ

参考

しいしせねっとHOME][日本PostgreSQL ユーザー会]