>> HOME >> FC5 MENU >> データベースサーバー (PostgreSQL)
PostgreSQL とはオープンソースのオブジェクトリレーショナルデータベース管理システム ( ORDBMS ) のひとつです。
性能や信頼性も商用データベースとほとんど変わらないフリーソフトウェアです。
CGI や Java・PHP などの言語より手軽にアクセスできるのが特徴です。

1. PostgreSQL のインストール
2. PostgreSQL の起動と自動起動設定
 1 ) PostgreSQL の起動
 2 ) PostgreSQL の自動起動設定
3. データベース管理ユーザ ( postgres ) の設定
 1 ) Linux パスワードの設定
 2 ) PostgreSQL パスワードの設定
4. PostgreSQL 初期設定
 1 ) データベース設定ファイル /var/lib/pgsql/data/postgresql.conf の編集
 2 ) データベース認証設定ファイル /var/lib/pgsql/data/pg_hba.conf の編集
 3 ) PostgreSQL の再起動
5. PostgreSQL データベースの作成
 1 ) データベースユーザーの作成
 2 ) データベースの作成
 3 ) PostgreSQL データベースへのログイン
 4 ) テーブルの作成
 5 ) データの挿入
 6 ) データの更新
 7 ) データの削除
 8 ) テーブルの削除
 8 ) PostgreSQL データベースからのログアウト
 9 ) データベースの削除
10 ) データベースユーザーの削除
1. PostgreSQL のインストール
[root@linux ~]# yum -y install postgresql-server 
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
core                                                                 [1/3]
core                      100% |=========================| 1.1 kB    00:00
updates                                                              [2/3]
updates                   100% |=========================| 1.2 kB    00:00
extras                                                               [3/3]
extras                    100% |=========================| 1.1 kB    00:00
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for postgresql-server to pack into transaction set.
postgresql-server-8.1.4-1 100% |=========================| 101 kB    00:00
---> Package postgresql-server.i386 0:8.1.4-1.FC5.1 set to be updated
--> Running transaction check
--> Processing Dependency: postgresql = 8.1.4-1.FC5.1 for package: postgresql-server
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for postgresql to pack into transaction set.
postgresql-8.1.4-1.FC5.1. 100% |=========================| 134 kB    00:00
---> Package postgresql.i386 0:8.1.4-1.FC5.1 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 postgresql-server       i386       8.1.4-1.FC5.1    updates           4.0 M
Installing for dependencies:
 postgresql              i386       8.1.4-1.FC5.1    updates           2.8 M

Transaction Summary
=============================================================================
Install      2 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 6.8 M
Downloading Packages:
(1/2): postgresql-8.1.4-1 100% |=========================| 2.8 MB    00:09
(2/2): postgresql-server- 100% |=========================| 4.0 MB    00:13
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: postgresql                   ######################### [1/2]
  Installing: postgresql-server            ######################### [2/2]

Installed: postgresql-server.i386 0:8.1.4-1.FC5.1
Dependency Installed: postgresql.i386 0:8.1.4-1.FC5.1
Complete!
2. PostgreSQL の起動と自動起動設定
1 ) PostgreSQL の起動
[root@linux ~]# service postgresql start 
データベースを初期化中:                                    [  OK  ]
postgresql サービスを開始中:                               [  OK  ]
2 ) PostgreSQL の自動起動設定
[root@linux ~]# chkconfig postgresql on 
[root@linux ~]# chkconfig --list postgresql 
postgresql      0:off   1:off   2:on    3:on    4:on    5:on    6:off
3. データベース管理ユーザー (postgres) の設定
※ データベース管理ユーザー ( postgres ) は PostgreSQL のインストール時に自動的に作成されます。
1 ) Linux パスワードの設定
[root@linux ~]# passwd postgres 
Changing password for user postgres.
New UNIX password: xxxxxxxxxxx 
Retype new UNIX password: xxxxxxxxxxx 
passwd: all authentication tokens updated successfully.
2 ) PostgreSQL パスワードの設定
PostgreSQL にログインし、パスワードを設定します。
[root@linux ~]# su - postgres 

-bash-3.1$ psql template1 
Welcome to psql 8.1.4, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

template1=# alter user postgres with password 'Password'; 
ALTER ROLE

template1=# \q 

-bash-3.1$
4. PostgreSQL 初期設定
1 ) データベース設定ファイル /var/lib/pgsql/data/postgresql.conf の編集
-bash-3.1$ vi /var/lib/pgsql/data/postgresql.conf 

#---------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#---------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost', '*' = all
# 追加(TCP/IP経由でのデータベース接続許可)
listen_addresses = '*'
2 ) データベース認証設定ファイル /var/lib/pgsql/data/pg_hba.conf の編集
-bash-3.1$ vi /var/lib/pgsql/data/pg_hba.conf 

# 以下を最終行へ追加
# 内部からのアクセスは無条件に許可
host  all  all 192.168.1.11    255.255.255.255      trust
# 上記以外からのアクセスはパスワード認証により許可
host  all  all 0.0.0.0         0.0.0.0              password crypt

-bash-3.1$ exit 
logout
3 ) PostgreSQL の再起動
[root@linux ~]# service postgresql restart 
postgresql サービスを停止中:                               [  OK  ]
postgresql サービスを開始中:                               [  OK  ]
5. PostgreSQL データベースの作成
ここでは、例として
  • データベース ユーザー : fedora
  • データベース 名 : testdb
  • テーブル 名 : testtbl
で、データベースを作成します。
1 ) データベースユーザーの作成
PostgreSQL のデータベースユーザーは、既存の Linux のユーザーである必要があります。
ここでは、"fedora" というユーザーが既に存在していることを前提に進めます。
[root@linux ~]# su - postgres 

-bash-3.1$ createuser -P fedora 
Enter password for new role:  xxxxxxxxxx 
Enter it again:  xxxxxxxxxx 
Shall the new role be a superuser? (y/n) n                       <--- 一般ユーザー(スーパーユーザーでない)
Shall the new role be allowed to create databases? (y/n) y       <--- 新しいデータベースの作成権限を与える
Shall the new role be allowed to create more new roles? (y/n) n  <--- ユーザの追加権限は与えない
CREATE ROLE

-bash-3.1$ exit 
logout
2 ) データベースの作成
作成した データベースユーザー "fedora" で実施します。
[root@linux ~]# su - fedora 

[fedora@linux ~]$ createdb --encoding EUC_JP testdb 
CREATE DATABASE

[fedora@linux ~]$ psql -l 
        List of databases
   Name    |  Owner   | Encoding
-----------+----------+----------
 postgres  | postgres | EUC_JP
 template0 | postgres | EUC_JP
 template1 | postgres | EUC_JP
 testdb    | fedora   | EUC_JP
(4 rows)
3 ) PostgreSQL データベースへのログイン
コマンドでデータベースを操作する SQL ツール ( psql ) を起動します。
[fedora@linux ~]$ psql testdb 
Welcome to psql 8.1.4, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

testdb=>
4 ) テーブルの作成
testdb=> create table testtbl(num int, name varchar(50)); 
CREATE TABLE

testdb=> \d testtbl 
           Table "public.testtbl"
 Column |         Type          | Modifiers
--------+-----------------------+-----------
 num    | integer               |
 name   | character varying(50) |
5 ) データの挿入
testdb=> insert into testtbl values(1,'鈴木 一太郎'); 
INSERT 0 1

testdb=> select * from testtbl; 
 num |    name
-----+-------------
   1 | 鈴木 一太郎
(1 row)
6 ) データの更新
testdb=> update testtbl set name='鈴木 一之介' where num=1; 
UPDATE 1

testdb=> select * from testtbl; 
 num |    name
-----+-------------
   1 | 鈴木 一之介
(1 row)
7 ) データの削除
testdb=> delete from testtbl where num=1; 
DELETE 1

testdb=> select * from testtbl; 
 num | name
-----+------
(0 rows)
8 ) テーブルの削除
testdb=> drop table testtbl; 
DROP TABLE
9 ) PostgreSQL データベースからのログアウト
testdb=> \q 

[fedora@linux ~]$
10 ) データベースの削除
[fedora@linux ~]$ dropdb testdb; 
DROP DATABASE

[fedora@linux ~]$ exit 
11 ) データベースユーザーの削除
[root@linux ~]# su - postgres 

-bash-3.1$ dropuser fedora 
DROP ROLE

-bash-3.1$ exit 
logout