bestlong 怕失憶筆記

當健忘由隨機逐漸趨向常態時,作筆記是非常必要的

Entries Tagged ‘PostgreSQL’

忘記 PostgreSQL 的管理者密碼該如何重新設定?

若是因為太久沒有使用而忘記 PostgreSQL 資料庫的管理者 postgres 帳號的密碼, 可以用下列的過程來重新設定:

修改用戶端認證設定檔 pg_hba.conf 將原來的 local 設定給註解掉, 例如:

#local all all XXXX

增加一行設定

local all all trust

存檔後重新啟動 postgresql 服務後就可以在主機上免密碼登入

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@bestlong ~]# psql -U postgres template1
Welcome to psql 8.3.7, 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 password 'YourNewPassword';
ALTER ROLE
template1=# \q
[root@bestlong ~]#

將密碼重設之後再還原 pg_hba.conf 的設定與重新啟動 postgresql 服務, 以回復到原來的安全性

Leave a Comment

讓Python連接PostgreSQL資料庫

使用 PyGreSQL – Python interface for PostgreSQL 來處理,可以到 PostgreSQL 官方網站下載。

操作環境如下
作業系統:Windows XP Professional
Python版本:2.5.1 for win
PostgreSQL版本:8.2.5 for win
PyGreSQL版本:PyGreSQL-3.8.1.win32-py2.5.exe

取得PyGreSQL時要注意與Python的版本對應

假設有個資料庫名為 db1 而其中有個資料表名為 table1 我們可以寫如下列簡易程式

1
2
3
4
5
6
7
8
# -*- coding: utf-8 -*-
import pg
conn = pg.connect('db1','localhost',5432,None,None,'username','password')
ds = conn.query("select * from table1")
if len(ds.getresult()) > 0:
        print ds
print "Press enter to continue."
raw_input()

這樣就會列出 table1 中的所有資料

Leave a Comment

安裝 PostgreSQL 方法

※ 安裝 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.

Leave a Comment

  • 工商服務

    廣告讀取中...
  • 近期留言

  • 標籤

  • 彙整