1. 程式人生 > >Windows下PostgreSQL 8.1版安裝圖解

Windows下PostgreSQL 8.1版安裝圖解

宣告:發現文件不錯,轉發IT168文件,如有問題,請與我聯絡,感謝。

【IT168 專稿】PostgreSQL是一套功能強大的物件-關係型資料庫管理系統。經過十幾年的發展, PostgreSQL 是世界上可以獲得的最先進的開放原始碼的資料庫系統, 它提供了多版本並行控制,支援幾乎所有 SQL 構件(包括子查詢,事務和使用者定義型別和函式), 並且可以獲得非常廣闊範圍的(開發)語言繫結 (包括 C,C++,Java,perl,tcl,和 python)。本文介紹的是其在windows系統下的安裝過程。

   一般說來,一個現代的與 Unix 相容的平臺應該就能執行 PostgreSQL。而如果在windows系統下安裝,你需要 Cygwin

 和cygipc 包。另外,如果要製作伺服器端程式語言 PL/Perl,則還需要完整的Perl安裝,包括 libperl 庫和標頭檔案。

   在磁碟支援方面,需要65MB左右用於存放安裝過程中的原始碼和大約15 MB的空間用於存放安裝目錄;一個空資料庫大概需要25MB;然後在使用過程中大概需要在一個平面文字檔案裡存放同等資料量資料五倍的空間儲存資料,如果你要執行迴歸測試,還臨時需要額外的90MB空間。

第一步:從網上下載基於windows的Cygwin安裝程式,雙擊開啟。

第二步:選擇安裝型別。由於我們已將安裝程式下載到了本地硬碟,故選擇第三項,然後單擊“下一步”。

第三步:選擇安裝路徑。一般按其預設即可。

第四步:選擇下載檔案包在本機存放路徑。請根據實際選擇。

接著會提示選擇連線型別、下載站點、選擇安裝包(需要確定加上:cygrunsrv (category Admin) 、postgresql (category Database)),之後便開始下載包並安裝cygwin了。

第一步:將cygserver 安裝成NT服務並啟動

   a.執行指令碼:$ /usr/bin/cygserver-config

   b.在win2003中設定環境變數:CYGWIN=server

   c.重啟win2003

第二步:在win2003的DOS狀態下,按下圖所示新建使用者帳戶及密碼

第三步:在系統所在分割槽新建一資料夾

   例如:D:\cygwin\home\postgres

第四步更新檔案: /etc/passwd

   使用命令:mkpasswd -l -u postgres >> /etc/passwd

   解釋:   向/etc/passwd檔案中加入使用者postgres的資訊

第五步:新建存放資料的目錄並設定postgres為該目錄的所有者

 

   mkdir /usr/share/postgresql/data

   chown postgres /usr/share/postgresql

   chown postgres /usr/share/postgresql/data

第六步:配置使用者許可權

   在執行框內輸入“secpol.msc”開啟“本地安全設定”視窗,依次點選“本地策略”-“使用者許可權分配”,在右邊窗口裡找到“作為服務登入”,雙擊開啟。

在出現的窗口裡單擊“新增使用者或組”新增一個名為“postgres”的使用者。

第七步:初始化資料區域

   登出原來的使用者,改用postgres進入win2003後執行如下命令:

   initdb –d /var/postgresql/data

   注意:PostgreSQL安裝程式只能在NTFS分割槽中完成資料庫的初始化工作,而PostgreSQL伺服器程式自身和一些工具程式可以安裝在任何分割槽中。如果為FAT分割槽格式,可以正常安裝PostgreSQL,但不要進行資料庫的初始化工作,只能待在安裝完成後,在FAT分割槽上手動執行initdb.exe程式來進行,但安全性和可靠性就不能保證了,要想建立表空間也會失敗。

第八步:將postmaster(PostgreSQL的伺服器)安裝成NT服務並啟動

   使用命令: cygrunsrv –I postmaster –p /usr/bin/postmaster –a “-d

/usr/share/postgresql/data –I” –y cygserver –s int –u postgres -o

  

命令解釋:

-I postmaster:新建一個名為postmaster的服務。

-p /usr/bin/postmaster:應用程式路徑為/usr/bin/postmaster。

-a"-D /usr/share/postgresql/data -i":

postmaster 將目錄 /usr/share/postgresql/data 做為資料目錄,必須設定“-i”(TCP/IP 連線) 和“-D”引數。

-y cygserver:指明postmaster依賴於cygserver

-s int:傳送訊號 INT when terminated is run by the user (-u) postgres

-o :在系統退出時停止服務

 

   注:更詳細的引數說明可以使用命令:“cygrunsrv -h”以及“postmaster –help”

之後Cygrunsrv 將會讓你輸入兩次密碼。

   OK,經過以上配置後,即可使用命令“psql –u postgres template1”登入postgresql資料庫了。

   注:“template1”是Postgresql在初始化時自動建立的測試資料庫。

 

WindowsPostgreSQL 8.1版安裝圖解一

 

現在談起免費資料庫,大多數人首先想到的可能是mysql,的確MySQL目前已經應用在國內很多領域,尤其是網架設方面。但是,實際上功能最強大、特性最豐富和最複雜的免費資料庫應該是PostgreSQL。它的很多特性正是當今許多商業資料庫例如Oracle、DB2等的前身。

  

  其實筆者最近也是因為專案需要,接觸了一點PostgreSQL的皮毛,最近PostgreSQL又剛釋出了8.1版本,筆者結合網上各位高手的經驗談一點自己的安裝心得,和才開始接觸PostgreSQL的新手朋友共同學習。

  

  從PostgreSQL 8.0開始,就已經正式支援Windows了,在這之前,如果你想在Windows上安裝PostgreSQL,要藉助於Cygwin等模擬Unix環境的工具來實現,因此在穩定性和效能上都要低於Linux上安裝版本。廢話少說,讓我們轉入正題。

  

  下載PostgreSQL for Windows

  

  登入http://www.postgresql.org/FTP/binary/v8.1.0/win32/,下載最新版:postgresql-8.1.0-1.zip,檔案大小為20.4M,支援多語言安裝。

  

  開始安裝

  

  下載安裝檔案到本地後,先用解壓縮工具把壓縮包解開,然後像安裝其他Windows應用程式一樣,雙擊postgresql-8.1.msi就可以開始安裝嚮導了。

  

  首先是選擇安裝過程中使用的語言,筆者找了一邊沒有找到中文,只好選擇還能看得懂得英文^_^。另外,你可以選擇最下面得選項以把詳細的安裝日誌寫到當前安裝目錄,以備排查安裝故障,也可以閱讀一下了解它的安裝過程。

 

選擇安裝語言

  點下一步就是選擇安裝內容的選項了,其中分四大部分,分別是資料庫伺服器端、使用者介面、資料庫驅動和開發模組。你可以根據需要選擇安裝。筆者為了瞭解更多的東西,就把四部分全部裝全了。另外此處要注意的是資料目錄選項只能安裝在NTFS格式的分割槽,如果你要安裝在其他格式的分割槽的話,需要在安裝完後,手動執行Initdb.exe。

選擇安裝選項1

選擇安裝選項2

  小提示:如果你喜歡用圖形介面來管理操作資料庫得話,在使用者介面裡可以選擇安裝pgAdminIII。

  接下來是服務配置,你可以把該資料庫伺服器作為Windows的一個系統服務執行,這也是Postgresql開始真正支援Windows安裝的一個體現(如下圖)。

選擇安裝為服務

  在此設定服務名,還有執行該服務的Windows帳號。你可以輸入一個已有帳號,也可以輸入一個目前並不存在的帳號,讓安裝程式自動建立這個帳號。

自動建立帳號

  建立帳號完畢後,就是要配置資料庫的監聽埠、連線許可,及本地區域和超級使用者的設定了。(注意,我選擇的是“中華人民共和國)這兒建立的超級帳號是資料庫管理員使用者,注意與前面的服務帳號區別。注意這個對話方塊只有你在上一步選擇了讓PostgreSQL作為一個系統服務執行才會出現。

初始化資料庫設定

  點選下一步後,會彈出一個遠端連線的選項,提示本地連線資料庫預設都可以被接受,但是如果想讓遠端計算機也能連線到資料庫的話,你需要在安裝完成後,單獨設定pg_hba.conf檔案,具體設定我們在後面再說明。

  選擇在預設建立的測試資料庫template1中啟用的過程語言,PL/perl需要ActiveState Perl 5.8的安裝支援,PL/python則Python 2.3的支援,我這兒只選擇了pgsql了。注意這個對話方塊只有你在選擇了讓PostgreSQL作為一個系統服務執行,並且選擇了初始化資料庫元件後才會出現。

  

選擇過程語言

  選擇在測試資料庫template1中啟用的模組,所有的擴充套件檔案都是會被安裝上,這一步只是選擇在你所有的資料庫中預設啟用哪些模組。這些擴充套件模組能提供一些增強的功能。

選擇載入擴充套件模組

  ok,至此安裝配置引數就已經配完了,你只需要點下一步等待安裝完成就可以了,PostgreSQL安裝速度極快,根據機器不同時間略有不同。最後出現安裝成功介面。

開始安裝

安裝結束介面

  重新起動後,發現在開始選單程式裡多了PostgreSQL 8.1的程式組,並且在工作管理員了多了幾個程序,如下圖。

安裝後程序選單

 

安裝後進程

  客戶端連線設定

  PostgreSQL出於安全考慮,預設是拒絕所有遠端客戶端的連線的,如果你要想遠端登入伺服器端的話,需要設定pg_hba.conf,從開始選單-->程式-->Postgresql 8.1-->configuration files中選擇編輯pg_hba.conf。

編輯pg_hba.conf

  改為如下內容:

  # IPv4 local connections:

  host  all     all     127.0.0.1/32     md5

  host  all     all     192.168.9.226/32   md5

  這樣表示本機和192.168.9.226這臺機器可以通過經過MD5加密的密碼連線資料庫。通過修改IP地址的掩碼,也可以允許哪一個段的地址可以連線伺服器。另外,認證方式MD5還可以改為trust,表示完全信任這個地址的連線(這一點在除錯程式時比較方便)。改為passWord,表示通過密碼連線,但是密碼以明文方式傳送。設定完後,需要重新啟動PostgreSQL才能生效。 

  客戶端連線測試

  經過上面的安裝和設定,一個最簡單的PostgreSQL資料庫伺服器就已經建立起來了,接下來我們看看我們如何在這個資料庫伺服器上實現以下幾個建達的任務:1.新建、刪除一個數據庫;2.新建、刪除一個表。

  通過上面的安裝過程,有兩種方式可以用來訪問操作資料庫。

  通過psql to postgres方式

  從開始選單-->程式-->Postgresql 8.1-->psql to postgres,輸入安裝時指定的超級使用者的密碼,如下圖

輸入密碼

  輸入密碼後,進入命令列介面

psql操作介面

  輸入create database mydb;建立一個數據庫mydb;通過drop database mydb刪除不想要的資料庫mydb;

  通過create table myfirsttb(firstcol integer,secondcol text);建立一個表myfirsttb,通過drop table myfirsttb;刪除表myfirsttb。

  更多的命令請到http://www.pgsqldb.org查詢相關文件。

  通過圖形化工具pgAdmin來管理資料庫

  從開始選單-->程式-->Postgresql 8.1-->pgAdmin III,如下圖

圖形化介面

  右鍵點選PostgreSQL Database Server 8.1(localhost:5432),點選連線(connect),由於我在pg_hba.conf中設定本地連線也要通過密碼,彈出如下對話方塊。

 

輸入超級使用者的口令視窗

  輸入超級使用者口令,進入圖形化管理介面

圖形化管理介面

  在這兒你可以輕鬆直觀的管理資料庫,具體俺就不多說了。

  另外通過其他的一些影象化管理工具也可以管理操作PostgreSQL資料庫,例如用EMS PostgreSQL Manager (必須2.7以上版本才支援postgresql8.0以上版本)進行管理。

  從安裝過程來看,在Windows上安裝PostgreSQL已經是一件很簡單的事了,即時是像筆者一樣新手也可以根據嚮導成功安裝,你可以在沒有管理許可權的情況下進行安裝。因為這是支援Windows(沒有Cygwin)的PostgreSQL 版本,PostgreSQL 作為服務安裝,在機器重啟之後可以沒有問題的啟動。

  PostgreSQL 的最小資源需求非常低。例如在遠端連線的時候,開啟網路瀏覽器和MS-Word ,可以看到在測試機器上面沒有受到任何影響。

  如果說到不足之處,由於使用PostgreSQL的使用者還不像使用mysql的使用者那麼廣泛,因此這方面網上交流的論壇還不是很活躍,對新手的入門是一個障礙。相信這一點也會逐漸改善。

你是否遇到過因為不小心而刪除了某個資料庫表,或者是存放資料庫的磁碟損壞了的情況呢?如果碰到這種情況,我相信你會覺得非常的沮喪,因為你努力工作了幾個星期的成果可能就付之東流了。

但是,你也不必每次都陷入這種困境。如果你將資料存放在 PostgreSQL 表中,你就可以定時的進行資料庫備份,從而避免上述悲劇的發生。PostgreSQL 自帶有內建工具來執行備份工作,而且在系統出現損壞或是意外時,你可以通過這些工具進行“回滾”,並通過以前儲存的快照將系統恢復到其初始的狀態。

資料備份

PostgreSQL 自帶的內建備份工具叫做 pg_dump。這個工具是通過一系列的SQL語句讀取某個指定的資料庫並複製其中的內容,以它作為快照並用於日後的資料恢復。客戶端到伺服器端的連線是用於執行備份工作。這些備份檔案就是前面所講的快照並可以用於日後的資料恢復。而保證客戶端與伺服器端的連線是執行備份所必需的。

注意: 在進行上述工作之前,首先請確保你具有登入到伺服器並訪問你將要備份的資料庫或表的許可權。你可以通過使用PostgreSQL 命令列客戶端——psql,進行伺服器登入。在客戶端中輸入主機名(-h),使用者名稱(-u)和密碼(-p),以及資料庫名,然後就可以校驗你是否被授權訪問。

使用 pg_dump 非常的簡單——只需要在命令提示符後面輸入將要匯出的資料庫名就可以進行備份工作了,如下例所示(根據你自己的安裝路經更改PostgreSQL 路徑):

$ /usr/local/pgsql/bin/pg_dump -D -h localhost -U pgsql test > test.bak

通過上面的命令就會建立一個名為test.bak的檔案,檔案中記錄了用於恢復資料庫的SQL命令。在這個檔案中你可以看到類似於下面這個例子中所列出的內容:

--

-- Name: pets; Type: TABLE; Schema: public; Owner: root; Tablespace:

--

 

CREATE TABLE pets (

species character varying,

name character varying

);

 

ALTER TABLE public.pets OWNER TO root;

--

-- Data for Name: pets; Type: TABLE DATA; Schema: public; Owner: root

--

INSERT INTO pets (species, name) VALUES ('dog', 'Sparky');

INSERT INTO pets (species, name) VALUES ('cat', 'Tabitha');

如果你希望對整個系統中所有的資料庫進行備份的話(而不是隻對某一個數據庫進行備份),你可以使用命令pg_dumpall 而不是pg_dump。執行這個命令可以對PostgreSQL 所能識別的所有的資料庫(包括其自身的系統資料庫) 備份到一個檔案中。下面給出了一個使用例項:

$ /usr/local/pgsql/bin/pg_dumpall -D -h localhost -U pgsql > all.bak

為了保證你的備份時刻保持更新,你可以通過往cron table中加入pg_dump或者是pg_dumpall命令來定期執行備份工作。這裡給出了兩個cron entries的例子。第一個是在每天凌晨3點對test資料庫進行備份,而第二個是在每個星期五的晚上9點對所有的資料庫進行備份:

0 3 * * * /usr/local/pgsql/bin/pg_dump -D -h localhost -U pgsql test > /disk2/test.bak0 21 * *

5 /usr/local/pgsql/bin/pg_dumpall -D -h localhost -U pgsql > /disk2/all.bak

資料恢復

從備份中恢復資料的工作比執行備份甚至更簡單——你所要做的就是通過執行備份檔案中的SQL命令來對資料庫進行恢復。如果你是使用pg_dump對某一個數據庫進行了備份,那麼備份中就會有CREATE TABLE 的語句來對源表進行復制。當然,你首先要新建立一個空資料庫來存放這些資料表。你可以使用createdb 這個工具來完成這一步工作,這個工具也是PostgreSQL 套件中的一部分:

$ /usr/local/pgsql/bin/createdb restored

現在你就可以執行備份檔案中的SQL命令來對資料庫進行恢復了,如下例所示:

$ /usr/local/pgsql/bin/psql -h localhost -U pgsql -d restored < test.bak

如果你是使用pg_dumpall對所有的資料庫進行備份的,就沒有必要先新建一個數據庫,因為備份檔案中已經包含了完成CREATE DATABASE工作的相關的呼叫。在這裡,只需要在psql命令列客戶端中輸入對應的備份檔案就可以了,而不需要指定目標資料庫:

$ /usr/local/pgsql/bin/psql -h localhost -U pgsql < all.bak

一旦資料恢復完成後,你就可以登入到伺服器並檢視到已恢復的資料。