[原创]OpenEuler20.03安装配置PostgreSQL13.4详细图文版
OpenEuler安裝配置PostgreSQL
編寫時(shí)間:2021年9月18日
作者:liupp
郵箱:liupp@88.com
| 序號(hào) | 更新內(nèi)容 | 更新日期 | 更新人 |
|---|---|---|---|
| 1 | 完成第一至三章內(nèi)容編輯; | 2021年9月18日 | liupp |
| 2 | 增加PostgreSQL服務(wù)開機(jī)自動(dòng)啟動(dòng); | 2021年10月25日 | liupp |
| 3 |
一、準(zhǔn)備條件
OpenEuler(Hyper-V虛擬機(jī)):
版本:20.03 LTS SP2
下載地址:https://www.openeuler.org/zh/download/PostgreSQL:
版本:13.4源碼版
下載地址:https://www.postgresql.org/download/
因PostgreSQL并未對OpenEuler發(fā)行版發(fā)布打包安裝版本,需要我們自己下載源碼進(jìn)行編譯安裝,其他linux發(fā)行版如果有打包版,可以自行下載安裝。
源碼下載位置:
*選擇當(dāng)前穩(wěn)定版的最新版的tar.gz壓縮文件,可以復(fù)制右鍵復(fù)制下載鏈接,保存?zhèn)溆谩?/p>
下載鏈接:https://ftp.postgresql.org/pub/source/v13.4/postgresql-13.4.tar.gz
二、安裝OpenEuler
2.1 安裝提示
操作系統(tǒng)的安裝按照提示進(jìn)行即可,在進(jìn)行軟件包選擇的時(shí)候,本次選擇了Server模式,右側(cè)的軟件包保持默認(rèn)未選擇。
按照提示安裝完畢后重啟即可進(jìn)入到登錄界面(命令行模式),本次安裝未安裝圖形界面。
注意:系統(tǒng)啟動(dòng)后,默認(rèn)DHCP自動(dòng)分配IP,需要先配置網(wǎng)絡(luò)。
2.2網(wǎng)絡(luò)配置
登錄成功后,輸入以下命令獲取當(dāng)前主機(jī)的網(wǎng)絡(luò)配置文件:
/** 1.切換到網(wǎng)絡(luò)配置文件目錄 **/ cd /etc/sysconfig/network-scripts/ /** 2.查看配置文件名稱 **/ ls獲取到配置文件名稱如下:
配置文件名稱為“ifcfg-eth0”,此時(shí)可以使用 “vi 文件名”來編輯該文件,如果對vi工具熟悉的情況下,以上操作可以通過一條命令來處理:
vi /etc/sysconfig/network-scripts/ifcfg-eth0默認(rèn)配置如下:
需要修改的配置項(xiàng)如下:
BOOTPROTO:將dhcp 修改為 none,代表將采用靜態(tài)分配IP地址;
ONBOOT:將no 修改為 yes,代表在啟動(dòng)時(shí)自動(dòng)啟用該設(shè)備;
新增:IPADDR=192.168.12.132 //代表分配的IP地址,這里根據(jù)情況自行設(shè)定;
新增:GATEWAY=192.168.12.254 //默認(rèn)網(wǎng)關(guān)
新增:PREFIX=24 //掩碼
新增:DNS1=202.102.224.68 //默認(rèn)DNS,多個(gè)DNS按序號(hào)自行增加;修改后的配置文件如下:
修改完成后保存退出vi編輯模式。
vi 打開文件后,進(jìn)入編輯模式 需要按下 “i”鍵,編輯完成后,先按下“Esc”鍵,然后輸入“:wq”為保存退出。
輸入以下命令重啟網(wǎng)絡(luò)服務(wù):
systemctl restart NetworkManager
沒有錯(cuò)誤提示即代表重啟成功,可通過ifconfig命令或者"ip a"命令查看當(dāng)前網(wǎng)絡(luò)情況,通過ping命令來查看網(wǎng)絡(luò)是否通暢。
如果此時(shí)重啟網(wǎng)絡(luò)后仍提示服務(wù)不可用,且無法ping通各個(gè)網(wǎng)站的話,可以停用當(dāng)前網(wǎng)卡然后重啟啟用即可。(經(jīng)測試發(fā)現(xiàn)采用Hyper-V創(chuàng)建的OpenEuler虛擬機(jī)偶爾出現(xiàn)這種情況,VM配置后直接成功聯(lián)網(wǎng)。)命令如下:
# 查看 網(wǎng)卡信息 nmcli con show # 停用 指定網(wǎng)卡 (eth0為查詢到的配置網(wǎng)卡信息) nmcli con down eth0 # 啟用 指定網(wǎng)卡 nmcli con up eth0
此時(shí)網(wǎng)絡(luò)已通暢,ssh默認(rèn)是打開的,此時(shí)可以通過ssh連接來管理該系統(tǒng),后續(xù)說明均通過ssh來處理。ssh登錄成功后如圖所示:
三、安裝PostgreSQL
3.1安裝步驟
閱讀官方源碼安裝說明;
下載源碼包;
根據(jù)官方說明安裝必須依賴;
根據(jù)官方說明編譯安裝PostgreSQL;
配置、啟動(dòng)PostgreSQL;
如無特殊說明,本說明是以root賬號(hào)登錄安裝,所以特殊需要系統(tǒng)權(quán)限命令不再需要sudo前綴,如實(shí)際安裝過程未采用root賬號(hào)導(dǎo)致安裝出現(xiàn)錯(cuò)誤,可嘗試在命令前增加sudo。
3.2官方安裝說明
官方源碼安裝說明文檔地址:https://www.postgresql.org/docs/current/installation.html
入口尋找方法:
打開文檔后,16.1Short Version章節(jié)給了基本安裝的命令,其他相關(guān)配置的說明見其他章節(jié),16.2Requirements章節(jié)說明與之相關(guān)的依賴,建議閱讀。
3.3下載源碼包
1.首先ssh連接上服務(wù)器,連接命令:
ssh root@192.168.12.132回車后輸入root密碼然后回車:看到如下截圖代表登錄成功:
2.在使用ssh登錄后,默認(rèn)在root用戶的根目錄,我們可以創(chuàng)建一個(gè)tools文件,將下載的源碼包放置在該文件夾下,命令如下:
mkdir tools cd tools wget https://ftp.postgresql.org/pub/source/v13.4/postgresql-13.4.tar.gz下載完成見下圖:
3.4安裝依賴
根據(jù)文檔說明必要的依賴如下:
make 需要版本3.80+
gcc
tar
Readline
zlib
其他可選依賴根據(jù)自身需要選裝。
3.4.1make
檢查當(dāng)前系統(tǒng)make 版本,可通過如下命令:
make --version
得到版本號(hào)為4.3,符合安裝要求,無需再安裝;
3.4.2gcc
gcc -v查詢到gcc已安裝,且版本為7.3.0,符合安裝條件;
3.4.3tar
tar為解壓軟件,系統(tǒng)已內(nèi)置,無需安裝;
3.4.4readline
Readline庫:它允許psql記住你輸入的每個(gè)命令,這樣就可以通過上下方向鍵快速輸入之前的命令,默認(rèn)開啟,也可以通過編譯參數(shù)--without-readline來禁止它,建議保留默認(rèn)。
readline 庫系統(tǒng)已經(jīng)內(nèi)置,但OpenEuler安裝PostgreSQL還要安裝readline-devel庫。
安裝命令:
dnf install readline-devel
或
yum install readline-devel
3.4.5zlib
zlib為默認(rèn)的壓縮庫,同readline,zlib系統(tǒng)已默認(rèn)內(nèi)置,但需要額外安裝zlib-devel庫。
安裝命令:
dnf install zlib-devel
或
yum install zlib-devel
3.4.6 其他
缺少的庫也可以一個(gè)命令統(tǒng)一安裝:
dnf install readline-devel zlib-devel或
yum install readline-devel zlib-devel
3.5編譯安裝
步驟:
解壓源碼包
根據(jù)官方簡單版本安裝命令編譯安裝
補(bǔ)充操作
3.5.1解壓源碼包
回到tools文件夾下,通過tar工具解壓源碼包到當(dāng)前目錄下,命令如下:
tar -xvf postgresql-13.4.tar.gz解壓后在當(dāng)前tools下生成一個(gè) postgresql-13.4的文件夾。
3.5.2解釋官方提供的安裝命令
官方提供的簡單版本的安裝命令如下:
./configure ##配置 make ##編譯 su ##切換管理員權(quán)限 make install ##安裝 adduser postgres ##添加postgres用戶 mkdir /usr/local/pgsql/data ##創(chuàng)建data存放目錄 chown postgres /usr/local/pgsql/data ##給postgres用戶授權(quán) su - postgres ##切換到postgres用戶(數(shù)據(jù)庫的操作不允許使用root用戶) /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data ##初始化數(shù)據(jù)庫 /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start ##啟動(dòng)數(shù)據(jù)庫 /usr/local/pgsql/bin/createdb test ##創(chuàng)建test數(shù)據(jù)庫 /usr/local/pgsql/bin/psql test ##連接test數(shù)據(jù)庫官方提供的命令相對簡單,這里需要解釋一下,部分操作將會(huì)修改官方的命令:
configure文件是一個(gè)可執(zhí)行的腳本文件,它有很多選項(xiàng),在待安裝的源碼目錄下使用命令./configure –help可以輸出詳細(xì)的選項(xiàng)列表。
其中--prefix選項(xiàng)是配置安裝目錄,如果不配置該選項(xiàng),安裝后可執(zhí)行文件默認(rèn)放在/usr /local/bin,庫文件默認(rèn)放在/usr/local/lib,配置文件默認(rèn)放在/usr/local/etc,其它的資源文件放在/usr /local/share,比較凌亂。
如果配置了--prefix,如:
./configure --prefix=/usr/local/test安裝后的所有資源文件都會(huì)被放在/usr/local/test目錄中,不會(huì)分散到其他目錄。
*這里我們配置的路徑為:
./configure --prefix=/usr/local/postgresql其他有修改命令將會(huì)在編譯安裝章節(jié)單獨(dú)說明。
3.5.3編譯安裝
現(xiàn)在我們逐項(xiàng)進(jìn)行執(zhí)行。
請保證當(dāng)前所在目錄為:/tools/ postgresql-13.4/
3.5.3.1 configure
執(zhí)行命令
./configure --prefix=/usr/local/postgresql
正確執(zhí)行完畢應(yīng)未報(bào)錯(cuò):
3.5.3.2 make
命令輸入make后回車,編譯過程耗時(shí)較長,請耐心等待編譯結(jié)束。
命令:
make
編譯過程未出現(xiàn)Error錯(cuò)誤字樣,代表編譯正常結(jié)束。
3.5.3.3 su
該命令為切換root管理權(quán)限,但當(dāng)前操作我們采用的是root賬號(hào),所以該命令無需執(zhí)行,如果您使用的是非root賬號(hào),請先執(zhí)行su命令。
3.5.3.4 make install
命令:
make install編譯過程未出現(xiàn)Error錯(cuò)誤字樣,代表編譯正常結(jié)束。
3.5.3.5 adduser postgres
命令:
adduser postgres創(chuàng)建postgres用戶和用戶組,默認(rèn)密碼隨機(jī),回車后無任何錯(cuò)誤提示代表創(chuàng)建成功;
3.5.3.6 mkdir /usr/local/pgsql/data
上面 我們將安裝地址修改為了我們自定義的地址,該條命令需要修改一下:
mkdir /usr/local/postgresql/data
3.5.3.7 chown postgres /usr/local/pgsql/data
同樣該命令修改為:
chown postgres /usr/local/postgresql/data
3.5.3.8 su - postgres
切換到postgres用戶
3.5.3.8 數(shù)據(jù)庫操作
因?yàn)槲覀冃薷牧税惭b位置,所以如下命令都要根據(jù)實(shí)際安裝位置修改。
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data ##初始化數(shù)據(jù)庫修改為:
/usr/local/postgresql/bin/initdb -D /usr/local/postgresql/data ##初始化數(shù)據(jù)庫
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start ##啟動(dòng)數(shù)據(jù)庫修改為:
/usr/local/postgresql/bin/pg_ctl -D /usr/local/postgresql/data -l logfile start ##啟動(dòng)數(shù)據(jù)庫
啟動(dòng)成功。
/usr/local/pgsql/bin/createdb test ##創(chuàng)建test數(shù)據(jù)庫修改為:
/usr/local/postgresql/bin/createdb test ##創(chuàng)建test數(shù)據(jù)庫
/usr/local/pgsql/bin/psql test ##連接test數(shù)據(jù)庫修改為:
/usr/local/postgresql/bin/psql test ##連接test數(shù)據(jù)庫
出現(xiàn)“test=#”代表已經(jīng)成功連接test數(shù)據(jù)庫,可以進(jìn)行相關(guān)sql操作了。
3.5.4.補(bǔ)充操作
3.5.4.1配置數(shù)據(jù)庫遠(yuǎn)程連接
經(jīng)過以上操作,數(shù)據(jù)庫已經(jīng)成功安裝完成,可以通過ps命令查看后臺(tái)進(jìn)程確認(rèn):
但是無法從外部通過數(shù)據(jù)庫工具連接,所以我們需要簡單對postgres進(jìn)行配置。
進(jìn)入postgrelsql下的data目錄,命令及目錄結(jié)構(gòu)如下:
base目錄是表空間目錄,global目錄是相關(guān)全局變量目錄, pg_hba.conf是訪問控制配置文件,postgresql.conf是postgresql主配置文件。我們需要修改的配置文件為pg_hba.conf和postgresql.conf文件。
修改pg_hba.conf文件,命令如下:
vi pg_hba.conf
拉到最下面,找到如下圖所示:
修改紅框內(nèi)容,修改為:
保存退出。
修改postgresql.conf文件,命令如下:
vi postgresql.conf
在展開到內(nèi)容中找到“# - Connection Settings -”配置項(xiàng):
修改紅圈圈中內(nèi)容,將前面的“#”去掉,修改'localhost'為’*‘,其他配置項(xiàng)保持不變,保存退出。
配置完畢后應(yīng)在防火墻對5432端口放行,此時(shí)使用postgres用戶(密碼隨機(jī),如果自行修改postgres密碼知曉的情況下可以直接執(zhí)行)無法執(zhí)行,應(yīng)先退出postgres賬號(hào),返回到root賬號(hào)。執(zhí)行命令如下:
exit ##退出postgres賬號(hào) ##以下命令在root賬戶下執(zhí)行 sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent ##配置防火墻放行5432端口 sudo firewall-cmd --reload ##防火墻重新加載配置文件此時(shí)切換回postgres賬號(hào),停止postgressql服務(wù)后,重新啟動(dòng)發(fā)現(xiàn)無法啟動(dòng),報(bào)錯(cuò)如下:
報(bào)錯(cuò)原因:沒有指定啟動(dòng)日志的路徑。啟動(dòng)命令和停止命令中的logfile需要指定為具體的log日志的命令。此時(shí)我們使用postgres賬戶在postgresql目錄創(chuàng)建log文件夾是沒有權(quán)限的,在3.5.3.7章節(jié),我們只給postgres賬號(hào)授權(quán)了data目錄。我們做如下操作:
1.切換回root賬號(hào);
2.給postgres賬號(hào)授權(quán)/usr/local/postgresql目錄的權(quán)限;
3.再切換回postgres賬號(hào)進(jìn)行l(wèi)og文件夾的創(chuàng)建;
在log文件夾下創(chuàng)建server.log文件:
命令如下:
touch log/server.log創(chuàng)建成功后修改啟動(dòng)命令為:
/usr/local/postgresql/bin/pg_ctl -D /usr/local/postgresql/data -l /usr/local/postgresql/log/server.log start執(zhí)行命令,啟動(dòng)成功。
此時(shí)使用外部的sql工具如navicat測試網(wǎng)絡(luò)是暢通的,但是我們需要修改一下數(shù)據(jù)庫賬戶postgres的默認(rèn)密碼才能進(jìn)行連接,先使用本地postgres賬號(hào)連接默認(rèn)數(shù)據(jù)庫來修改數(shù)據(jù)庫賬戶postgres的密碼:
/usr/local/postgresql/bin/psql ##使用postgres用戶連接默認(rèn)postgres數(shù)據(jù)庫; ALTER USER postgres WITH PASSWORD 'postgres'; #修改數(shù)據(jù)庫用戶postgres的密碼為postgres;
此時(shí)使用Navicat測試數(shù)據(jù)庫連接成功。
3.5.5.2配置環(huán)境變量
截止到現(xiàn)在如果我們想在安裝postgresql的服務(wù)器使用psql或其他提供的工具連接數(shù)據(jù)庫,就必須輸入psql的全路徑來調(diào)用,如:
/usr/local/postgresql/bin/psql并不是很方便我們使用,此時(shí)我們可以將postgresql配置到系統(tǒng)環(huán)境變量里面去,注意:請配置到postgres用戶或者其他自定義操作postgresql的用戶的bash_profile環(huán)境變量中,不要配置到root賬號(hào)的環(huán)境變量中,或者可以配置到etc/profile中,單獨(dú)配置到root的環(huán)境變量中時(shí)不能使用的。
配置請以root用戶配置:
vi /etc/profile ##將如下內(nèi)容添加到文件末尾 PATH=/usr/local/postgresql/bin:$PATH export PATH ##保存退出后執(zhí)行刷新配置 source /etc/profile ##切換到postgres用戶 su - postgres ##此時(shí)就可以直接執(zhí)行psql命令了 psql
3.5.5.3設(shè)置PostgreSQL為開機(jī)啟動(dòng)
PostgreSQL的開機(jī)自動(dòng)啟動(dòng)腳本位于PostgreSQL源碼目錄下的contrib/start-scripts目錄下:
其中l(wèi)inux文件為linux環(huán)境下的開機(jī)自啟動(dòng)腳本,將其拷貝到“/etc/init.d”目錄下,并改名為postgresql:cp linux /etc/init.d/postgresql切換到/etc/init.d目錄,使用vi打開postgresql文件修改如下內(nèi)容:
#修改前: #Installation prefix prefix=/usr/local/pgsql #修改后: #Intalllation prefix[2021-10-25] prefix=/usr/local/postgresql #修改前: # Data directory #PGDATA="/usr/local/pgsql/data" #修改后: # Data directory[2021-10-25] PGDATA="/usr/local/postgresql/data" # Who to run the postmaster as, usually "postgres". (NOT "root") # 將啟動(dòng)用戶修改為實(shí)際用戶,這里使用postgres,所以不變。 PGUSER=postgres #修改前: # Where to keep a log file PGLOG="$PGDATA/serverlog" #修改后: # Where to keep a log flie[2021-10-25] PGLOG="/usr/local/postgresql/log/server.log"然后保存退出。
然后修改postgresql文件的執(zhí)行權(quán)限:
chmod a+x postgresql添加開機(jī)啟動(dòng):
chkconfig --add postgresql然后重啟服務(wù)器開機(jī)驗(yàn)證即可。
后記
此文原創(chuàng) ,轉(zhuǎn)載請注明出處。謝謝。
2021年10月25日增加“PostgreSQL服務(wù)開機(jī)自動(dòng)啟動(dòng)”;
總結(jié)
以上是生活随笔為你收集整理的[原创]OpenEuler20.03安装配置PostgreSQL13.4详细图文版的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQLite快速入门二表、视图的创建、修
- 下一篇: 在网页上加入运行代码的功能