PostgreSQLを使うPostgreSQLは信頼性の高いRDBMSで、かなり大きなシステムにおいても、十分対応できる性能を持つ。一つのDBの大きさは無制限(但し1パーティションまたはOSのファイルサイズ上限まで)、1つのテーブルの大きさは42TBまで、一つのテーブルの行数やインデックス数は42億まで・・・と、不足のないスペックとなっている。機能的にも、トランザクションをサポートしており、本格運用が可能である。 PostgreSQL のインストール PostgreSQL のインストールまずは apt-get コマンドでインストール。 # apt-get install postgresql 下記のメッセージが表示される。「libpgsql2」と「postgresql-client」も一緒に導入されることが分かる。 Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: libpgsql2 postgresql-client The following NEW packages will be installed: libpgsql2 postgresql postgresql-client 0 packages upgraded, 3 newly installed, 0 to remove and 0 not upgraded. Need to get 1896kB of archives. After unpacking 4731kB will be used. Do you want to continue? [Y/n] 「Y」または単にEnterキーを押す。 インストールが進むと、パッケージの初期設定画面となる。 PostgreSQL databases can be created with any one of a number of different character encodings. Please choose the default encoding, which will be used for all newly-created databases in the absence of a specific encoding specification. The choices are:
SQL_ASCII ASCII
EUC_JP Japanese EUC
EUC_CN Chinese EUC
EUC_KR Korean EUC
EUC_TW Taiwan EUC
UNICODE Unicode(UTF-8)
MULE_INTERNAL Mule internal
LATIN1 ISO 8859-1 English and some European languages
LATIN2 ISO 8859-2 English and some European languages
LATIN3 ISO 8859-3 English and some European languages
LATIN4 ISO 8859-4 English and some European languages
LATIN5 ISO 8859-5 English and some European languages
LATIN6 ISO 8859-10 ECMA-144 Latin Alphabet No.6
LATIN7 ISO 8859-13 Latin Alphabet No.7
LATIN8 ISO 8859-14 Latin Alphabet No.8
LATIN9 ISO 8859-15 Latin Alphabet No.9
LATIN10 ISO 8859-16 ASRO SR 14111 Latin Alphabet No.10
ISO-8859-5 ECMA-113 Latin/Cyrillic
ISO-8859-6 ECMA-114 Latin/Arabic
ISO-8859-7 ECMA-118 Latin/Greek
ISO-8859-8 ECMA-121 Latin/Hebrew
KOI8 KOI8-R
WIN Windows CP1251
ALT Windows CP866
Enter default encoding (SQL_ASCII):EUC_JP
通常はEUC_JPでよいだろう。ここでEUC_JPを選んでも、作成するDBごとに文字コードの指定ができるので、とりあえずは標準的な言語設定をしておくのが無難である。 すると今度はシステムのロケールを聞いてくる。 You need to specify the locale under which the postmaster will run. (This mainly affects the sorting of text. Use of any locale but C will reduce the efficiency of index access; however, it will also force sorting by ASCII code rather than by national collating order.) You have the following locales enabled in your system: en_US en_US.utf8 ja_JP.eucjp ja_JP.utf8 Select locale [C]:ja_JP.eucjp もちろんja_JP.eucjpを入力し、Enter。 PostgreSQLの設定設定ファイルは/etc/postgresqlにある。RedHat系のディストリビューションでは設定ファイルは/var/lib/pgsql/data だったと思うが、Debian GNU/Linux は、FHS(Filesystem Hierarchy Standard)に従った配置で /etc/アプリ名 になっている。最初は違和感があるかもしれないが、ほかのアプリの設定ファイルは、どれも/etcのソフト名のディレクトリ下にあることを考えれば、debianのファイルの位置の方が一貫性があってしっくり来ると思う。ま、それでも /var/lib/postgres/dataにも上記設定ファイルのエイリアスが作成されている。 最低限記述する必要のあるファイルは、postgresql.conf と pg_hba.conf の二つである。 まずは postgresql.conf を見てほしい。ネットワーク越しに接続を許可するためには下記の点を確認または編集する tcpip_socket = 1 port = 5432 tcpip_socket の値は、on とか true でもいい。0 だと外部からの接続は一切受け付けない。 次に pg_hba.conf 。hba とは Host Base Authentification のことである。認証によってセキュリティを確保するには必須といえる。pg_hba.conf では下記のようにポリシーを設定できる。 local all password host all 0.0.0.0 0.0.0.0 password このように設定すると、次のようにパスワードをつけたユーザーのみが認証され、接続できる形となる。 ユーザーとパスワードデータベースユーザーを作成する前に覚えておきたいのは、PostgreSQLにおけるスーパーユーザーが、「postgres」であることだ。だからDBを作成するにあたり、このユーザーがpsqlというDB用のターミナルから各種作業をできるようにしなければならない。手っ取り早いのは、rootがpostgresユーザーのUNIXのログインをできるようにシステムパスワードを設定し、下記の作業に入ることだ。 まずユーザーpostgresになってpsqlを起動する。 # su - postgres $ createdb test $ psql test 上記では、suコマンドでユーザー postgres になり、test という名のデータベースを作成し、そのDBを指定してPostgeSQLのターミナルを起動している。 すると次のようなプロンプト表示になる。
Password:
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
test=#
ユーザーの追加とパスワードの設定は次のようにする。
test=# create user user_name with password 'xxxxxxx';
設定済みのユーザーのパスワード変更は次のようにする。ここでpostgres自身のパスワードを設定してもよい。
test=# alter user user_name with password 'xxxxxxx';
ちなみに、
test=# update pg_shadow set passwd='xxxxxxx' where usename='user_name';
と設定すると、暗号化パスワード認証に対応し、pg_hba.confの password の部分をcrypt とし、よりセキュアな設定ができる。 本来 www の接続だけならローカル接続の設定だけでいいわけだが、CSEのような管理ツールからDBをさわる場合には外部からの接続も定義する必要がある。もちろんすべての端末からアクセス可能な状態を提供する必要もないので、pg_hba.confに接続可能なIPアドレスを指定し、接続できる端末もしくはネットワークを限定することが望ましい。 DB の作成基本的な設定が済んだら、実際に簡単な DB を作成してみよう。まず cratedb コマンドでDBを作成。 $ createdb test DBを作成したら、そこにデータを追加する。psql を起動し、プロンプトから下記のSQL文を実行する。 create table items( item_id int4, item_name varchar(20), model_no varchar(20), cost numeric(10,2), primary key ( item_id ) ); insert into items values(101,'デスクトップPC','DTPC001',150000); insert into items values(102,'ノートPC','NTPC001',250000); insert into items values(103,'液晶ディスプレイ','LCD001',50000); insert into items values(104,'レーザープリンタ','LZPRT001',300000); insert into items values(105,'インクジェットプリンタ','IJPRT001',30000); insert into items values(106,'スイッチングHUB','SWHUB001',10000); insert into items values(107,'ブロードバンドルータ','BBLT001',20000); insert into items values(108,'キーボード','KBD001',5000); insert into items values(109,'マウス','MUS001',2000); insert into items values(110,'LANケーブル','LCB001',1500); CSE や psqledit などのツールを使うとたくさんのSQL文を一括実行できるので、DBをメンテするには大変重宝する。ただここでは個々のツールの使用法には触れない。各ツールのドキュメントやサポートページの情報を参照し、使いこなしてほしい。 データが登録できたら、 select 文を使って登録したデータを表示させてみる。
test =# select * from items;
item_id | item_name | model_no | cost
---------+------------------------+----------+-----------
101 | デスクトップPC | DTPC001 | 150000.00
102 | ノートPC | NTPC001 | 250000.00
103 | 液晶ディスプレイ | LCD001 | 50000.00
104 | レーザープリンタ | LZPRT001 | 300000.00
105 | インクジェットプリンタ | IJPRT001 | 30000.00
106 | スイッチングHUB | SWHUB001 | 10000.00
107 | ブロードバンドルータ | BBLT001 | 20000.00
108 | キーボード | KBD001 | 5000.00
109 | マウス | MUS001 | 2000.00
110 | LANケーブル | LCB001 | 1500.00
(10 rows)
以上のように表示されればOKだ。 最後に。DBの管理やSQLについては、なにか分厚い書籍を購入して、じっくり腰を据えて、一通り学んでみることをおすすめする。上記のような設定までできてしまえば、思う存分DBを学ぶ環境を持つことができるだろう。
|