※ 安裝 PostgreSQL 方法

預期:
A. 能讓 JDK 存取.
B. 能讓 Perl 存取.
C. 能存放中文 Data.
D. 能讓 pgaccess (PostgreSQL for XWindow) 以圖像化程式維護 Database.
E. 能透過 ODBC 在 MS Windows 平台存取 Data.
F. 能讓 pgAdmin II for MS Windows 以圖像化程式維護 Database.

前提:

以甚麼 user 為 owner 來安裝軟件呢, 我一般的做法是用 root 去安裝, 安裝完成並成功作過一些測驗操作後, 便 create 一個正式的 user 給它, 並把軟件的整個目錄及檔案設定給這個 user。

例如安裝 PostgreSQL, 我以 root Login 並安裝完成後, 再 create 一個 “postgres” user(這是 PostgreSQL 內定的 user 名稱, OS level 用同名作 username 可作 OS authentication), 然後用指令:
chown -R postgres
把 owner 歸屬於 postgres user。

以 Source code 安裝的步驟:
1. 安裝 Java JDK 1.3;
特別要注意環境變數 JAVA_HOME 不可缺;
e.g.: JAVA_HOME=/usr/lib/jdk1.3
export JAVA_HOME
環境變數可存放於 /etc/profile 中;

2. 安裝 ANT:
a) 這是另一個安裝包, 同樣是從 Jakarta 下載回來。直接解壓於你想存放的目錄, 例如解壓到 /usr/local/ant/jakarta-ant-1.4.1
b) 設定環境變數:
* ANT_HOME=/usr/local/ant/jakarta-ant-1.4.1
* PATH=$PATH:/usr/local/ant/jakarta-ant-1.4.1/bin
* export ANT_HOME PATH

3. 安裝 tcl Module:
* 安裝這個的目的是為了將來執行 pgaccess;
* 我用的是 SUSE Linux, 一 Click 便安裝了, 這部份請有心人補上。

4. 安裝 PostgreSQL:
a) 解壓安裝包:
就放到 /usr/src 中吧: tar zxvf postgresql-7.2.tar.gz
b) 設定 Compile 參數:
./configure –enable–odbc –enable-multibyte –enable-CXX
–enable-locale –enable-recode –with-perl –with-tcl
–with-java
c) Compile:
gmake
d) Install:
gmake install
日後儘管有 Data, 重複這四步驟以調校 PostgreSQL, 對 Data 沒影響,
這是我的經驗, 當然還是先 Backup 更保險;

5. 設定 PostgreSQL 的環境變數:
* LD_LIBRARY_PATH=/usr/local/pgsql/lib
* PATH=$PATH:/usr/local/pgsql/bin
* MANPATH=$MANPATH:/usr/local/pgsql/man
* PGDATA=/usr/local/pgsql/data
環境變數可存放於 /etc/profile 中;

6. 建立 Data 目錄:
initdb -D /usr/local/pgsql/data
注意, 這必須與 PGDATA 環境變數所指向的目錄一致;

7. 起動 Database Engine:
pg_ctl -o “-p 5432 -i” start
(shutdown的指令是 pg_ctl stop)

8. 建立 Database:
我以一個名叫 test_db 的 database name 作範例, 下同;
createdb test_db
(刪除 database 的指令是 dropdb)

9. 進入 PostgreSQL 操作環境:
psql test_db

10. 查看 Database user 資料:
=> select * from pg_shadow;
這時應該看到一預設的 user “postgres”

11. 更改其密碼:
=> alter user postgres with password ‘xxxxx’;

12. 在 test_db 中建立 Table, 加入 records, select 出來,
或各種 DML 測試;

13. 離開 psql:
=> \q

至此 Server 端成功安裝了。

14. 修改 /usr/local/pgsql/data/pg_hba.conf, 加入一條 entry, 作用
是容許 Remote database client 接入:
host all 202.202.202.0 255.255.255.0 password
其中的 202.202.202.0 是 client group, 或稱 Network ID,
而 255.255.255.0 則是 address mask, 或稱 Subnet mask.