亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4212 | 回復(fù): 3
打印 上一主題 下一主題

PostgreSQL從菜鳥到專家 Linux和Unix上配置PostgreSQL [復(fù)制鏈接]

論壇徽章:
6
CU大牛徽章
日期:2013-03-14 14:14:08CU大;照
日期:2013-03-14 14:14:26CU大牛徽章
日期:2013-03-14 14:14:29處女座
日期:2014-04-21 11:51:59辰龍
日期:2014-05-12 09:15:10NBA常規(guī)賽紀(jì)念章
日期:2015-05-04 22:32:03
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-05-02 10:48 |只看該作者 |倒序瀏覽
在Linux和Unix上配置PostgreSQL
在你安裝好PostgreSQL后,無論是通過RPM包或者通過源碼編譯,你都需要執(zhí)行一些步驟讓它運行起來。第一步,你需要建立一個叫postgres的用戶,然后你需要為數(shù)據(jù)庫建立一個目錄并初始化數(shù)據(jù)庫結(jié)構(gòu)。然后,你可以通過啟動postmaster進程啟動PostgreSQL了。
建立postgres用戶
PostgreSQL的數(shù)據(jù)庫主進程postmaster是一個特別的程序。它負責(zé)處理所有的用戶對所有數(shù)據(jù)庫的訪問。它必須允許用戶訪問自己的數(shù)據(jù)但在沒授權(quán)的情況下不允許訪問其他用戶的數(shù)據(jù)。為了實現(xiàn)這個功能,它需要能夠控制所有的數(shù)據(jù)文件,因而普通用戶不允許直接訪問這些文件。postmaster進程將通過檢查訪問數(shù)據(jù)的用戶的賦權(quán)情況控制對數(shù)據(jù)文件的訪問。
一般來說,PostgreSQL需要用一個非管理員用戶運行,也就是說可以是任何普通用戶;如果你在你的home目錄里頭安裝了數(shù)據(jù)庫,這個用戶可以是你自己的用戶。但是,PostgreSQL通常使用一個概念上的虛擬用戶來完成數(shù)據(jù)訪問。通常,這個一個叫做postgres的用戶被建立用來管理這些數(shù)據(jù)文件,它不需要其他的訪問權(quán)限。另外,postgres虛擬用戶可以提供一些其他的安全措施,例如這個用戶無法登錄,所以別人無法非法訪問這些數(shù)據(jù)。postmaster程序代表其他用戶用這個用戶去訪問數(shù)據(jù)庫文件。
因此,建立一個可運行的PostgreSQL系統(tǒng)的第一步就是建立postgres用戶。每個系統(tǒng)建立用戶的方法都不同。Linux可以通過root用戶使用useradd命令添加:
# useradd postgres
其他的UNIX系統(tǒng)中尼可能需要建立home目錄,修改配置文件或者運行相關(guān)的工具。請參考你的系統(tǒng)的文檔來獲得相關(guān)管理工具的細節(jié)。
建立數(shù)據(jù)庫目錄
下一步,你必須通過root用戶建立一個目錄給PostgreSQL用來存放數(shù)據(jù)庫,并將目錄的所有者設(shè)置為postgres:
# mkdir /usr/local/pgsql/data
# chown postgres /usr/local/pgsql/data
在這里我們使用默認(rèn)的位置給數(shù)據(jù)庫。你可以選擇在其他地方存儲數(shù)據(jù),就像我們前面在“PostgreSQL的安裝解析”小節(jié)里討論的一樣。
初始化數(shù)據(jù)庫
通過initdb工具初始化PostgreSQL數(shù)據(jù)庫,初始化時需要制定你文件系統(tǒng)中想要存儲數(shù)據(jù)庫的位置。這將做很多事,包括建立PostgreSQL需要運行的數(shù)據(jù)結(jié)構(gòu)以及初始化一個可工作的數(shù)據(jù)庫:template1。
你需要使用postgres用戶來運行initdb工具。為了做到這點,最可靠的方法是完成兩步,第一步是通過su命令切換到root用戶,然后切換成postgres用戶,就像以下所示(作為一個普通用戶,你可能無法用其他用戶身份運行程序,所以你必須先變成超級用戶):
$ su
# su – postgres
pg$
現(xiàn)在你運行的程序是以postgres用戶運行的,并且你可以訪問PostgreSQL的數(shù)據(jù)文件了。很明顯,我們現(xiàn)實了postgres用戶的shell的命令提示符pg$。
警告:不要為了圖方便直接用root而不是postgres用戶完成以上過程。由于安全原因,用root身份運行服務(wù)進程可能非常危險。如果這個進程有問題,可能導(dǎo)致外部通過網(wǎng)絡(luò)非法訪問你的系統(tǒng)。由于這個原因,postmaster將拒絕通過root運行。
通過initdb命令初始化數(shù)據(jù)庫:
pg$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
The files belonging to this database system will be owned by user “postgres”.
This user must also own the server process.

The database cluster will be initialized with locale en_US.UTF-8.
The default database encoding has accordingly been set to UTF8.
The default text search configuration will be set to “english”.

WARNING: enabling “trust” authentication for local connections
You can change this by editing pg_hba.conf or using the -A option the
next time you run initdb.

Success. You can now start the database server using:

/usr/local/pgsql9/bin/postgres -D pgdata
or
/usr/local/pgsql9/bin/pg_ctl -D pgdata -l logfile start
pg$
如果一切正常,你將在initdb命令的-D參數(shù)指向的位置擁有一個全新的空白數(shù)據(jù)庫。
配置連接權(quán)限
默認(rèn)情況下,PostgreSQL不允許全面的遠程訪問。為了賦權(quán)給遠程連接,你必須編輯配置文件pg_hba.conf。這個文件存在于數(shù)據(jù)庫文件的區(qū)域(在本例中,位于/usr/local/pgsql/),它包含允許或者拒絕特定用戶連接到數(shù)據(jù)庫的權(quán)限的配置記錄。默認(rèn)情況下,本地用戶可以連接但遠程用戶不允許。文件格式非常簡單,PostgreSQL自帶的默認(rèn)文件包含大量的有用的注釋用于協(xié)助添加記錄。你可以根據(jù)需要給單個的用戶、主機、計算機組或者單獨的數(shù)據(jù)庫賦權(quán)。
例如,希望允許用戶neil通過IP地址為192.168.0.3的主機連接到bpsimple數(shù)據(jù)庫,添加以下行到pg_hba.conf文件:
host    bpsimple    neil    192.168.0.3/32  md5
注意,在早于8.0版本的PostgreSQL中,pg_hba.conf通過IP地址和子網(wǎng)掩碼說明一個主機地址,所以之前的例子應(yīng)該寫成這樣:
host    bpsimple    neil    192.168.0.3 255.255.255.255 md5
本例中,我們將添加一條記錄來運行局域網(wǎng)中(本例中,子網(wǎng)為192.168.x.x)的任何計算機通過密碼認(rèn)證訪問數(shù)據(jù)庫。(如果你需要不同的訪問策略,參考配置文件里頭的注釋)我們添加一行到pg_hba.conf的末尾,就像這樣:
host    all all 192.168.0.0/16  md5
這意味著IP地址由192.168開頭的計算機可以訪問所有的數(shù)據(jù)庫。此外,加入我們信任網(wǎng)絡(luò)中的所有用戶,我們可以通過指定使用trust標(biāo)記不受限的訪問方法作為訪問策略,就像這樣:
host    all all 192.168.0.0/16  trust
PostgreSQL的postmaster服務(wù)進程讀取配置文件postgresql.conf(也存在于數(shù)據(jù)目錄中)來設(shè)置一系列的運行選項,包括(如果沒有另外指定-D選項或者配置PGDATA環(huán)境變量)數(shù)據(jù)庫數(shù)據(jù)文件的位置。這個配置文件被很好的注釋了,如果你想修改任何設(shè)置,它都提供了向?qū)。PostgreSQL的文檔有一章講述了運行配置。
例如,我們可以設(shè)置postgresql.conf文件中的listen_addresses參數(shù)允許服務(wù)器監(jiān)聽網(wǎng)絡(luò)連接,而不是通過-i選項:
listen_addresses=’*’
實際上,我們推薦通過postgresql.conf設(shè)置配置參數(shù)來控制postmaster進程的行為。
啟動postmaster進程
現(xiàn)在,你可以啟動服務(wù)進程了。再次提醒,你可以使用-D選項告訴postmaster數(shù)據(jù)庫文件所在位置。如果你想允許網(wǎng)絡(luò)上的用戶訪問你的數(shù)據(jù),你可以使用-i選項啟用遠程訪問(如果你沒在postgresql.conf文件中啟用listen_addresses選項,就像前面所說的):
pg$ /usr/local/pgsql/bin/postmaster -i -D /usr/local/pgsql/data >logfile 2>&1 &
這條命令啟動postmaster,重定向進程輸出到一個文件(名叫l(wèi)ogfile,存放在postgres用戶的home目錄中),并且通過shell的2>&1合并標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出。你可以通過重定向輸出到其他文件來選擇不同的日志位置。
PostgreSQL提供的pg_ctl工具提供了一種簡單的方法啟動、停止和重啟(就是停止和啟動)postmaster進程。如果PostgreSQL就像之前所屬的那樣完全由postgresql.conf文件配置,可以簡單的使用以下命令啟動、停止和重啟:
pg_ctl start
pg_ctl stop
pg_ctl restart
連接到數(shù)據(jù)庫
現(xiàn)在你可以通過嘗試連接到數(shù)據(jù)庫測試它是否正常工作了。psql工具是用來與數(shù)據(jù)庫進行交互和進行簡單的管理工作例如建立用戶,建立數(shù)據(jù)庫以及建表。在本章后面我們將用它來建立和填充數(shù)據(jù)庫,在第5章將詳細講解它的功能,F(xiàn)在,你可以簡單地嘗試連接到一個數(shù)據(jù)庫。以下的反饋顯示你已經(jīng)運行了postmaster:
pg$ /usr/local/pgsql/bin/psql
psql:  FATAL  1:  Database  “postgres”  does  not  exist  in  the  system  catalog.
不要被上面顯示的致命錯誤嚇著。默認(rèn)情況下,psql連接到本機的數(shù)據(jù)庫并嘗試用啟動這個程序的用戶的名稱打開數(shù)據(jù)庫。因為我們在這里沒有建立叫postgres的數(shù)據(jù)庫,所以連接失敗。這象征著,postmaster進程運行了并且能夠正常響應(yīng)失敗的細節(jié)。
為了指定連接的數(shù)據(jù)庫,可以傳遞-d參數(shù)給psql。全新的PostgreSQL系統(tǒng)包含一些系統(tǒng)使用的數(shù)據(jù)庫作為你需要新建的數(shù)據(jù)庫的模板。其中有一個叫做template1。如果你需要,你可以連接到數(shù)據(jù)庫這個數(shù)據(jù)庫用來完成管理功能。
為了檢查網(wǎng)絡(luò)連接,你可以使用網(wǎng)絡(luò)上其他機器安裝的psql作為客戶端,或者其他的PostgreSQL兼容的程序。在psql中,你可以使用-h選項指定主機(無論是名稱還是IP地址),并指定一個系統(tǒng)數(shù)據(jù)庫(如果你還沒建立一個真正的數(shù)據(jù)庫)。
remote$ psql -h 192.168.0.111 -d template1
Welcome to psql 8.0.0, 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=# \q


remote$
配置自動啟動
最后一步需要做的是安排postmaster服務(wù)進程在機器重啟的時候自動啟動。實際上你所有要做的就是確保postmaster在啟動后被運行了。再次,對于Linux和UNIX變種系統(tǒng),這里都有一些小標(biāo)準(zhǔn)可以遵從。請參考你的系統(tǒng)文檔的細節(jié)。
如果你是從Linux發(fā)行版安裝的PostgreSQL,啟動腳本應(yīng)該已經(jīng)通過RPM包安裝的時候完成配置了。在SuSE Linux中,PostgreSQL在系統(tǒng)進入多用戶模式的時候通過/etc/rc.d/init.d下面的一個叫做postgresql的腳本啟動。
如果你想自己寫啟動腳本,最簡單的辦法是建立一個簡單的腳步使用你需要的參數(shù)啟動postmaster,并且在一個自動啟動的腳本里頭添加一個到你的腳本的調(diào)用就OK,例如在/etc/rc.d里面的腳本。需要確保postmaster是由postgres用戶啟動的。以下是從源碼安裝的一個默認(rèn)安裝的PostgreSQL的可以完成以上工作的示例腳本:
#!/bin/sh
# Script to start and stop PostgreSQL
SERVER=/usr/local/pgsql/bin/postmaster
PGCTL=/usr/local/pgsql/bin/pg_ctl
PGDATA=/usr/local/pgsql/data
OPTIONS=-i
LOGFILE=/usr/local/pgsql/data/postmaster.log
case “$1″ in
start)
echo -n “Starting PostgreSQL…”
su -l postgres -c “nohup $SERVER $OPTIONS -D $PGDATA >$LOGFILE 2>&1 &”
;;
stop)
echo -n “Stopping PostgreSQL…”
su -l postgres -c “$PGCTL -D $PGDATA stop”
;;
*)
echo “Usage: $0 {start|stop}”
exit 1
;;
esac
exit 0
注:在Debian Linux中,在su -l的地方,你需要使用su -。
建立一個包含以上腳本的可執(zhí)行腳本。給它命名為MyPostgreSQL。使用chmod命令給它賦予執(zhí)行權(quán)限,就像以下的情況:
# chmod a+rx MyPostgreSQL
然后,你需要安排腳本在服務(wù)器啟動和關(guān)機的時候啟動和停止PostgreSQL:
MyPostgreSQL start
MyPostgreSQL stop
對于使用System V類型的init腳本的系統(tǒng)(例如很多Linux發(fā)行版),你可以把腳本放在適當(dāng)?shù)奈恢。例如在SuSE Linux中,你應(yīng)該把腳本放在/etc/rc.d/init.d/MyPostgreSQL,并且建立以下位置的軟連接到這個腳本來實現(xiàn)在服務(wù)器進入和離開多用戶模式的時候啟動和停止PostgreSQL:
/etc/rc.d/rc2.d/S25MyPostgreSQL
/etc/rc.d/rc2.d/K25MyPostgreSQL
/etc/rc.d/rc3.d/S25MyPostgreSQL
/etc/rc.d/rc3.d/K25MyPostgreSQL
請參考你的系統(tǒng)文檔關(guān)于啟動腳本的部分的詳細信息。
停止PostgreSQL
PostgreSQL服務(wù)進程有序關(guān)閉非常重要,這將允許它將任何未寫入數(shù)據(jù)庫的數(shù)據(jù)寫入數(shù)據(jù)庫并釋放它使用的共享內(nèi)存資源。
為了安全地關(guān)閉數(shù)據(jù)庫,可以通過postgres用戶或者root用戶使用pg_ctrl工具這樣做:
# /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data stop
如果有啟動腳本,你可以像下面這樣使用它們。
# /etc/rc.d/init.d/MyPostgreSQL stop
這些腳本能保證數(shù)據(jù)庫在機器關(guān)機或者重啟的時候能正常關(guān)閉。

相關(guān)資源
為了在使用PostgreSQL時方便一點,最好添加PostgreSQL應(yīng)用程序路徑到執(zhí)行程序的搜索路徑中,手冊文件也需要這么做。在標(biāo)準(zhǔn)UNIX shell中,添加以下代碼到你的啟動腳本中(.profile or .bashrc):

PATH=$PATH:/usr/local/pgsql/bin
MANPATH=$MANPATH:/usr/local/pgsql/man
export PATH MANPATH

當(dāng)前和最新測試版本的PostgreSQL的源碼可以在http://www.postgresql.org找到。更多的PostgreSQL資源信息在本書附錄G中列出來了。

來源:http://www.mysqlops.com/2012/05/ ... -set.html#more-5326

論壇徽章:
0
2 [報告]
發(fā)表于 2012-06-26 12:23 |只看該作者
請教高手:

我的psql庫在LINUX8.0下使用,在導(dǎo)入一個庫表時出錯了,后來在/etc/init.d下執(zhí)行./postgresql start 出現(xiàn)大概是下面的提示:
postgresql exit status of parent of /usr/bin/postmaster

論壇徽章:
6
CU大牛徽章
日期:2013-03-14 14:14:08CU大牛徽章
日期:2013-03-14 14:14:26CU大牛徽章
日期:2013-03-14 14:14:29處女座
日期:2014-04-21 11:51:59辰龍
日期:2014-05-12 09:15:10NBA常規(guī)賽紀(jì)念章
日期:2015-05-04 22:32:03
3 [報告]
發(fā)表于 2012-06-27 18:11 |只看該作者
coldwind_1226 發(fā)表于 2012-06-26 12:23
請教高手:

我的psql庫在LINUX8.0下使用,在導(dǎo)入一個庫表時出錯了,后來在/etc/init.d下執(zhí)行./postgresq ...


這個問題還真沒有遇到過呢

論壇徽章:
13
15-16賽季CBA聯(lián)賽之同曦
日期:2016-01-28 19:52:032015亞冠之北京國安
日期:2015-10-07 14:28:19NBA常規(guī)賽紀(jì)念章
日期:2015-05-04 22:32:03處女座
日期:2015-01-15 19:45:44卯兔
日期:2014-10-28 16:17:14白羊座
日期:2014-05-24 15:10:46寅虎
日期:2014-05-10 09:50:35白羊座
日期:2014-03-12 20:52:17午馬
日期:2014-03-01 08:37:27射手座
日期:2014-02-19 19:26:54子鼠
日期:2013-11-30 09:03:56獅子座
日期:2013-09-08 08:37:52
4 [報告]
發(fā)表于 2012-06-29 11:07 |只看該作者
感謝分享 ^_^
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP