天天晚上疲勞的睡在牀上時,才感受真真切切地過了一天。人生最重要的不只是努力,還有方向。壓力不是有人比你努力,而是比你牛叉幾倍的人依然比你努力。即便看不到將來,即便看不到但願,也依然相信,本身錯不了,本身選的人生錯不了。次日叫醒個人不是鬧鐘,其實,仍是夢想!!html
2013-07-14 20:08:58linux
1. 準備條件sql
1) 裝了GCC的ubuntu操做系統 (我安裝在了虛擬機上)數據庫
2) 下載好的postgreSQL 9.19源碼或二進制包(二進制包也能夠在ubuntu上直接獲取)ubuntu
2. postgreSQL安裝windows
postgreSQL安裝分爲源碼安裝和二進制安裝,各有各的好處,源碼安裝能夠本身制定一些參數和設置(詳細參考官方文檔);二進制安裝能夠不須要怎麼配置就能夠直接使用了,簡單、方便。但作正規項目部署的話,仍是建議使用源碼安裝,能夠針對項目進行靈活的配置。安全
另問題:我安裝上ubuntu後,系統當中並無GCC,我是直接上網apt-get install的;看安裝包(ubuntu-12.04.2-server-amd64)中有GCC的目錄,但安裝時總是提示缺乏依賴,找依賴要找一大堆,麻煩,有知道怎麼使用系統安裝包裝GCC的同窗,請共享下經驗唄。app
2.1 二進制包安裝dom
1) 在線獲取postgreSQL9.1,命令以下:apt-get install postgresql-9.1;不要選錯了。以後選擇「Y」便可自動安裝。socket
安裝完成後postgreSQL已經自動啓動,以下:
2) 安裝完成後只需關注剛初始化的數據庫管理文件和數據文件的存放位置。
數據文件:/var/lib/postgresql/9.1/main/
數據庫配置文件:/etc/postgresql/9.1/main
管理文件和lib庫文件:/usr/lib/postgresql/9.1/,裏面包括bin和lib目錄
3) 安裝完成後,postgreSQL會建立一個針對數據庫操做的postgres操做系統用戶,經過root的su passwd postgres 能夠更改系統postgres用戶的密碼。咱們切換到postgres用戶下面,並執行psql命令(能夠直接使用psql命令,是由於二進制包的配置在安裝時已經將$PATH環境變量寫好了),能夠看到已經進入到數據中。
4) 此時,postgresql數據庫已經能夠在本機訪問了,但要經過客戶端(好比windows上裝的pgAdmin3,或pgpool-II等第三方組件等),還須要配置兩個文件:pg_hba.conf(鏈接數據庫的身份驗證方式)、postgresql.conf(數據的配置文件),這些文件都在 數據庫配置文件:/etc/postgresql/9.1/main 目錄中。其中的配置在下面會講到。
2.2 源碼安裝
1) 將下載好的源碼包(postgresql-9.1.9.tar.gz)上傳並進入到/usr/local/src目錄下面。如何作linux和windows之間的共享,網上有一大批文章能夠參閱,在這裏再也不作講解。我使用的是簡單的samba共享。
2) 解壓縮源碼包:tar –zvxf postgresql-9.1.9.tar.gz
3) 進入剛解壓縮出的postgresql-9.1.9目錄:cd postgresql-9.1.9/ 能夠看到以下文件:
4) 此時,咱們須要編譯postgresql,--prefix 參數用於指定安裝目錄,咱們先在/usr/local/下建立postgresql目錄,命令以下:mkdir /usr/local/postgresql(圖就不貼了);其中還有不少參數,請你們參考官方文檔。
在安裝過程當中會出現缺乏兩個組件的依賴,readline和zlib;readline做用是用psql進入數據庫後對操做的記憶,即退出psql後再進入,使用「↑」或「↓」時顯示以前打出的命令,跟dos操做差很少。Zlib的做用是後期對日誌的壓縮。固然,在編譯的時候也可使用--without-readline --without-zlib來忽略這兩個錯誤,但咱們如今仍是安裝上吧。從網上直接獲取,apt-get install libreadline6-dev zlib1g-dev
編譯postgresql:./configure --prefix=/usr/local/postgresql
make world或make(world指所有編譯,也能夠不用加)
make install-world或make install
5) 編譯安裝完成後在/usr/local/postgresql目錄下會出現postgresql的一些管理文件、頭文件、庫文件等目錄。以下圖:
此時,只是安裝了postgresql數據庫的軟件而已,尚未初始化數據庫。先在/usr/local/postgresql目錄下面建立一個data目錄(固然也能夠存放於其餘地方),用於存放初始化的數據庫的文件。
如今咱們須要一個操做系統級別的管理數據庫的組(定義爲postgres)和用戶(定義爲postgres)並修改postgres密碼爲123,操做命令:
groupadd postgres
useradd –g postgres postgres
passwd postgres
對新建立postgres用戶賦予data目錄的自由操做權限。命令:chown –R postgres /usr/local/postgresql/data
一切準備就緒,咱們切換到postgres用戶,並進入到bin目錄,使用initdb命令初始化第一個數據庫。Initdb中咱們須要--encoding參數爲utf8,設置數據庫編碼爲utf8,咱們將數據庫初始化到/usr/local/postgresql/data目錄中。其完整命令爲:initdb --encoding=utf8 –D /usr/local/postgresql/data
至此數據建立完畢,能夠看到啓動數據庫命令的提示,有兩種方法啓動:(1)./postgres –D ../data (2)./pg_ctl –D ../data –l logfile start,相對路勁爲/usr/local/postgresql/bin;
若是想在同一臺機器中部署兩個數據庫實例,則能夠再使用initdb命令將數據庫初始化到另外一個目錄中,此目錄要更改成postgres用戶擁有權限,初始化完成後更改端口便可。
2.3 postgreSQL安裝完成後的配置
2.3.1外部遠程訪問postgreSQL
postgreSQL數據庫初始化安裝完畢後,默認只能在本機訪問,而其餘電腦沒法訪問本機的postgreSQL。若是須要外部訪問postgreSQL,則須要修改幾個文件,postgresql.conf、pg_hba.conf;
找到對應的數據目錄,若是按本文安裝,使用二進制包安裝的,數據庫配置目錄爲:/etc/postgresql/9.1/main;若是是按源碼安裝的,數據庫目錄爲:/usr/local/postgresql/data;打開後目錄中能夠看到有postgresql.conf、pg_hba.conf文件。
1) 修改postgresql.conf文件:
此文件爲數據庫的配置文件,包括postgreSQL的鏈接數量配置、共享內存的配置、日誌配置、數據庫複製配置等管理用的配置文件。之後配置集羣等須要修改此文件。
找到#- Connection Settings - 節下的
#listen_addresses=’localhost’ 改成listen_addresses=’*’ (’#’號註釋不要,localhost改成’*’,接受爲任何鏈接)
#port=5432改成port=5432(’#’號註釋不要)
2) 修改pg_hba.conf文件:
此文件爲數據庫的鏈接配置文件,用來限制或容許什麼樣的地址以什麼樣的訪問方式能夠訪問postgreSQL。詳細的內容再也不多講,此文件頭部有註釋,相信你們均可以看的懂。
在此文件中增長以下行:
host all all 0.0.0.0/0 md5
解釋下含義:
文件格式爲:host DATABASE USER ADDRESS METHOD [OPTIONS]
Host:主機訪問類型,local爲Unix-domain socket鏈接訪問方式,host爲TCP/IP socket或SSL-encrypted TCP/IP socket鏈接訪問方式。
第一個all:要訪問的數據庫,all則爲所有。
第二個all:以那個用戶訪問數據庫,all則爲所有
0.0.0.0/0:容許全部IP訪問
md5:以md5的鏈接訪問postgreSQL,若是是trust,則鏈接postgreSQL不須要密碼。但爲安全起見,咱們使用md5。
至此,兩個文件都已經更改完畢,從新啓動postgreSQL便可。切換postgres用戶,輸入重啓數據庫命令:./pg_ctl –D ../data restart
但此時使用pgadmin-III鏈接postgreSQL時會出現如下錯誤FATAL: password authentication failed for user "postgres",
緣由爲初始化數據庫後,系統會自動添加一個無密碼的postgres用戶,並且使用本機訪問數據庫時是trust方式的(詳見pg_hba.conf文件),所以在本機訪問數據庫能夠不須要密碼,但非本機的鏈接則須要密碼,因此咱們須要在數據庫中增長postgres用戶的密碼。