Ubuntu 7.0+ 初學 PostgreSQL 者注意事項
更新:2007-11-02 (Update:01)
對映章節:
內容:
阿益最近在實體程課中將 Debian/Ubuntu 與 PostgreSQL
當成 LPIC 與 SCJP 班的正式必要教材...
Ubuntu 比 Debian 多了幾項使用者上安全性的控管機制
原設計是美意, 卻可能造成對初學 PostgreSQL 者上的不解...
這點讓阿益在經歷二梯次的 LPIC 教學後,
認為還是有必要寫篇給初學者參考,
必竟讓 PostgreSQL 親近於使用者是有必要的!
- 已由 APT 安裝後, 對於 PostgreSQL Server
想停用系統開機後即長駐, 改由手動載入者, 可到
[系統] -> [系統管理] -> [服務]
中取消選取 "PostgreSQL 資料庫伺服器".
日後手動的啟停用經由終端機方式進行.
$sudo /etc/init.d/postgresql-8.2 [start/stop/restart/...] - 使用PostgreSQL Client 終端機命令: psql
進行 PostgreSQL 終端機服務時, 出現類似以下情況之一:
psql: 嚴重錯誤: Ident 驗證使用者"postgres" 失敗
psql: 嚴重錯誤: 資料庫"up"不存在
psql: 嚴重錯誤: role "up" does not exist
主要原因為受到 PostgreSQL 中預設僅存在 postgres 用戶,
且受制於 pg_hba.conf 中對 Local 採用 Unix Sockets Ident
驗正用戶身份(可自行調變驗正方式), 對於初學者最快上手的方式,
為先轉為 postgres 用戶
$sudo su postgres
後,使用命令分別建立新使用者與新使用者同名的資料庫
$createuser [您的用戶名]
$createdb [您的用戶名]
來創建您在 PostgreSQL 中的帳號,
並自動易於使用同用戶名的預設資料庫. - 使用 APT 安裝 PostgreSQL 後, 會自動幫您建構
postgres 用戶與其專屬的 Home 目錄.
切換成 postgres 用戶在 Ubuntu 必須擁有 sudo 權
#sudo su postgres
專屬的 Home 目錄與DB存放
(限定專屬 postgres 700 rwx --- ---)
/var/lib/postgresql/[version]/ - 預設安全性情況下, PostgreSQL 不接受遠端 TCP 連線
(PostgreSQL 組態檔全集中在 /etc/postgresql/[version]/main/*)
必須手動修改
postgresql.conf (PostgreSQL系統組態文件)
#listen_addresses='localhost' =>
listen_addresses='*'
*表示 All 後重啟 PostgreSQL Server.
並配合適當修改
pg_hba.conf (PostgreSQL 主機基礎的存取權限文件)
中您需要的條件與來源 IP 來放寬安全性限制.
格式:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 0.0.0.0 0.0.0.0 md5
#這行表示為接受以 host 型態來源IP為任意的連線
到本地任一資料庫及任一使用者均可接受連線, 但認證方式採用 md5.
延伸閱讀(Link):
5 則留言:
感謝 阿益兄:
留下此重要的程序.
然 ""為先轉為 postgres 用戶(#sudo su postgres)後,使用命令 ... ""
此段 方法與我有一些不同,在此提出以供網友參考
#sudo passwd postgres
(也許要,先輸入管理者 password)
(在輸入 postgres password,兩次)
#sudo su postgres
(輸入 postgres password)
#psql -d template1 (會進入)
Welcome to psql 8.2.3 the PostgreSQL interactive terminal.
....
template1=#create database db1; (所需的 database name)
template1=#\q (離開)
#
很感謝您^.^
您提供的方法確實比我多考慮到一層安全性, 在預設的情況下我原本提供的方式只要擁有能進行 sudo 權的即可完全取得 PostgreSQL 的管理權, 這點您考慮的比阿益更多!!!
替 postgres 用戶再加上一道安全門, 這確實發生在 PostgreSQL 必須分離給非 sudo 原擁有人時, 多加了一道資料庫的安全鎖.
再補充一點 #sudo passwd postgres 雖可以對 postgres 使用者給於密碼, 但一般情況下對擁有 sudo 權限者, 仍可直接變更為 postgres 哦
站長您好:
很冒昧的請教您有關 PostgresQL 相關問題,我先說明我的測試環境:
CPU AMD64 x 2 4000
RAM 8G
HD 轉速 7200
OS FreeBSD 7.0 amd64
PostgresQL 8.3
我建立了 3 個 Table A、B、C
Table A 有 a1、a2 欄位 a1 作 Index 共有 300 行資料。
Table B 有 b1、b2、b3 欄位 b1 作 Index,b3 與 a1 為外鍵關聯,共有 3 萬行資料。
Table C 有 c1、c2、c3 欄位 c1、c2 作 Index,c3 與 b1 為外鍵關聯,共有 300 萬行資料。
我建立一個 View D 以 A.a2 AS d1 , B.b2 AS d2 , C.c1 AS d3 , C.c2 AS d4 從 C left join B on c3 = b1 left join A on b3 = a1。
PostgresQL 預設為使用 Indexsearch 。
當我對 D 作查詢 Select d1,d2 From D Where d3 >= x AND d4 <= y(出現結果必為一行或為空)。
目前我的查詢速度為 0.6 秒多。
請問這樣環境下效能可以再增加嗎?
是否我該如何修改資料結構或是 PostgresQL .conf 的設定呢?
感謝您花費時間與我討論。
PostgreSQL 伺服器效能調校精靈(工具)http://postgresql-chinese.blogspot.com/2008/09/postgresql.html
這篇文的工具會幫上你的忙, 雖然您用的是 Unix-like OS, 但異曲同工的去修改 postgresql.conf 是值得的, 如果預算夠, 當前的 SSD 做 RAID 效果很不錯哦, 前題只要你的DB不須儲放太多BYTEA.
張貼留言