PostgreSQL9.4在RHEL上的安裝
這次在測試中需要使用PostgreSQL來驗證某一具體功能是否正確,需要使用較為新一點的版本,因此就藉此機會:
- 安裝和配置PostgreSQL;
- 學習一些基本的用法。
安裝PostgreSQL
先是憑著直覺去了PostgreSQL的官網 翻了翻文件,下載了兩個比較常用版本的Manual,然後剛要著手安裝,卻發現需要使用原始碼編譯的方式!
使用原始碼在RHEL安裝PostgreSQL
我其實並不排斥使用原始碼編譯並安裝應用,只是覺得這個方式比較慢,且容易出錯(對我而言),如果有更好的alternative approach,我當然不會使用原始碼來安裝它。
這裡不介紹太多,如果需要的話,大家可以自行下載PostgreSQL Manual文件,裡面大概第15章有較為詳細的介紹,不再贅述了。
使用rpm packages安裝PostgreSQL
儘管PostgreSQL官網沒有明顯的連結,隨便一個搜尋引擎就能很容易搜尋到這樣一個網站PostgreSQL RPM很明顯,這個是PostgreSQL官網下的一個二級網站,費解的是不知道為什麼沒有放到明顯的位置,不知道是否原始碼編譯方式是否能夠更有效地利用系統資源(猜測)。
下面介紹如何使用rpm packages在RHEL5上安裝PostgreSQL。按照推薦,安裝過程其實非常簡單:
推薦的安裝方式
-1,使用wget獲取到包含PostgreSQL rpm mirror配置的package
wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm
-2, 安裝所獲取到的package
sudo rpm -ivh pgdg-centos94-9.4-1.noarch.rpm
-3,使用yum groupinstall安裝PostgreSQL
sudo yum groupinstall "PostgreSQL Database Server 9.4 PGDG"
如果你的網路足夠的好運,此處你應該已經安裝成功了,否則可能會提示無可用的mirror這樣的錯誤了。
不幸的是,我的網路沒那麼好運氣! 我在安裝過程中卻發現了我的伺服器無法連線到mirror,下載不到安裝所需要的rpm package。不知道是否因為這些mirror是否都被擋在了牆外,不得不workaround:
有CN特色的安裝方式
上文中講到提示無法找到可用的mirror,之所以要找mirror是因為需要下載對應的package,那麼我幫你下載到本地,然後直接安裝就可以了(就是這麼簡單):
-1, 下載PostgreSQL所需要的Server, Libs, Contrib, Client等rpm packages
- *1.1 這裡[PostgreSQL for RHEL5](http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/repoview/postgresqldbserver94.group.html) 可以下載上述所需要的rpm檔案們;*
- *1.2 最好被他們都放在同一個目錄下,這樣做的好處是即使rpm packages直接有依賴關係,也可以讓系統自己去決定安裝先後順序。 *
-2,使用yum安裝所下載到的rpm package
sudo yum install *.rpm
然後一路確認下去,最後就得到了安裝成功的提示了。
So, now the installed PostgreSQL instance is ready for use!
簡單配置PostgreSQL
成功安裝了PostgreSQL之後,現在可以使用它來測試了:一般情況下,安裝之後,需要啟動服務,然後方能正常使用。先來看看安裝PostgreSQL之後,是否有服務安裝了,RHEL下,這些服務通常會在/etc/init.d/
目錄下有對應的啟動指令碼。檢視後發現/etc/init.d/
目錄下多出了一個檔案postgresql-9.4
還是慣例,以root身份啟動這個服務,不過這裡有可能會提示你啟動失敗,是因為PostgreSQL 9.4會要求先初始化資料庫,然後才能提供服務,提示資訊如下:
/var/lib/pgsql/9.4/data is missing. Use "service postgresql-9.4 initdb" to initialize the cluster first.
所以,安裝PostgreSQL 9.4之後,正確的使用流程應該是:
-1, 先初始化db
sudo service postgresql-9.4 initdb
此處需要執行一點時間, Be patient!
-2,啟動PostgreSQL9.4服務
sudo service postgresql-9.4 start
此處應該能看到綠色的[OK]啦!然後就可以使用PostgreSQL了!
-3, 驗證啟動結果
- 3.1 安裝PostgreSQL成功之後,系統就會自動建立使用者postgres這個使用者,可以通過檢視`/etc/passwd`這個檔案,確定是否正確建立了這個使用者;
- 3.2 切換到使用者postgres登入,使用如下命令檢視是否可以正常登入到PostgreSQL資料庫,如果提示“postgres=#”則表示已經正確建立了postgres資料庫並能正確使用這個資料庫了!
-bash-3.2$ psql
psql (9.4.8)
Type "help" for help.
postgres=#
-4,建立使用者和庫
現在可以建立業務所使用的使用者和資料庫了,其實建立過程也比較簡單(也許沒有追求太深入,留後深造!),下面給出主要的命令:
- 4.1 先在root使用者下建立一個系統使用者 wh
useradd -s /bin/bash -d /home/wh -p passw0rd wh
- 4.2 然後在postgres使用者下連線到PostgreSQL Server,執行如下的使用者建立命令:
-bash-3.2$ psql
psql (9.4.8)
Type "help" for help.
postgres=# CREATE USER wh WITH PASSWORD `passw0rd`;
- 4.3 建立資料庫並授權給所建立的使用者
-bash-3.2$ psql
psql (9.4.8)
Type "help" for help.
postgres=# CREATE DATABASE test_db OWNER wh;
postgres=# GRANT ALL PRIVILEGES ON DATABASE test_db TO wh;
postgres=# q
- 4.4 切換到wh在使用者,嘗試連線到資料庫
-bash-3.2$ psql test_db
psql (9.4.8)
Type "help" for help.
test_db=>
至此,已經能夠正確使用新建立的使用者wh成功連線到新建立的PostgreSQL資料庫了!
客戶端訪問PostgreSQL Server
通過上文所做的操作,已經能夠讓你在PostgreSQL所在機器本身操作建立的資料庫了,但是,通常情況下,我們需要從其他的機器連線到資料庫伺服器,以便更好的讓應用伺服器和資料庫伺服器都能發揮出更佳的效能。
通過客戶端連線PostgreSQL
- 1, 通過PostgreSQL Client嘗試連線到PostgreSQL Server,卻被提示無法連線:
$ psql -h 192.168.1.101 -p 5432 -U wh test_db -W
Password for user wh:
psql: could not connect to server: Connection refused
Is the server running on host "192.168.1.101" and accepting
TCP/IP connections on port 5432?
其原因是因為預設情況下,PostgreSQL雖然正確啟動了,資料庫伺服器本身也能夠正常的訪問,但是,其他的機器並不能通過TCP/IP連線到PostgreSQL服務,預設它並未監聽任何TCP/IP埠。
- 2, 這裡就需要配置TCP/IP監聽,以便允許其他機器訪問PostgreSQL服務:
sudo vim /var/lib/pgsql/9.4/data/postgresql.conf
# 1, 修改listen_addresses = `*`
# 2, 修改port = 5432
# 3, 取消對應行的註釋
# 重啟PostgreSQL服務
sudo service postgresql-9.4 restart
Stopping postgresql-9.4 service: [ OK ]
Starting postgresql-9.4 service: [ OK ]
- 3, 再次從客戶端嘗試連線到PostgreSQL服務
$ psql -h 192.168.1.101 -p 5432 -U wh test_db -W
Password for user wh:
psql: FATAL: no pg_hba.conf entry for host "192.168.1.102", user "wh", database "test_db", SSL off
出現這個錯誤有兩方面的解釋:
- 首先,埠5432已經開放監聽了,並且接收到了PostgreSQL客戶端的連線請求;
- 其次, 驗證客戶端連線合法性出錯了,因為客戶端“192.168.1.102”並未被允許連線。
- 4,新增客戶端到白名單
在PostgreSQL伺服器上修改配置檔案/var/lib/pgsql/9.4/data/pg_hba.conf
sudo vim /var/lib/pgsql/9.4/data/pg_hba.conf
# 新增允許IP 192.168.1.102連線的配置項
host all all 192.168.1.102/32 md5
回到客戶端再次嘗試連線,你就會發現這次是可以成功連線到PostgreSQL服務了。
$ psql -h 192.168.1.101 -p 5432 -U wh test_db -W
Password for user wh:
psql (9.4.8)
Type "help" for help.
test_db=>
至此,PostgreSQL已經可以在遠端Client正常使用了。
相關文章
- 在rhel和CentOS上安裝SQL Server的方法CentOSSQLServer
- 在 Centos/RHEL 6.X 上安裝 WettyCentOS
- 【靜默】在RHEL 6.5上靜默安裝Oracle 18cOracle
- RHEL 9 / Rocky Linux 9 上安裝 MySQLLinuxMySql
- 【MySQL學習】在RHEL7.3上使用yum安裝MySQL5.7MySql
- 在 RHEL、CentOS 和 Fedora 上安裝 Git 及設定 Git 賬號的技巧CentOSGit
- RHEL安裝Xtrabackup
- 在 RHEL 和 CentOS 上檢查或列出已安裝的安全更新的兩種方法CentOS
- 如何在 CentOS 8 / RHEL 8 上安裝 VirtualBox 6.0CentOS
- Install Google Chrome on Fedora 28/27, CentOS/RHEL 7.5 (在 fedora 28 等 上 安裝 chrome)GoChromeCentOS
- 如何在 CentOS、RHEL 和 Fedora 上安裝 DHCP 服務CentOS
- 如何在 CentOS 8/RHEL 8 上安裝和使用 CockpitCentOSKPI
- RHEL6安裝NGINXNginx
- 如何在 CentOS 8/RHEL 8 上安裝和配置 Nagios CoreCentOSiOS
- 在GCP的Kubernetes上安裝daprGC
- Firefox和Chrome瀏覽器在RHEL6_X86-64的安裝FirefoxChrome瀏覽器
- 如何在 CentOS 8/RHEL 8 上安裝 Ansible(自動化工具)CentOS
- 在Debian上安裝freeswitch
- 在virtualbox上安裝ubuntuUbuntu
- SDL在win上安裝
- 在docker上安裝AWVSDocker
- 在Ubuntu上安裝MariaDBUbuntu
- 在CentOS上安裝GitCentOSGit
- 在Linux上安裝gskitLinux
- 在CentOS上安裝dockerCentOSDocker
- 在Windows上安裝MavenWindowsMaven
- 在centos上安裝molochCentOS
- 在Android上安裝EntwareAndroid
- 在DebianStretch上安裝FFmpeg
- 在ubuntu上安裝docker, 使用國內的安裝源UbuntuDocker
- RHEL9.4安裝knock配置ssh
- emcc13.5 安裝 rhel7.8
- rhel7安裝python3Python
- rhel9.2離線下載安裝包,並安裝
- 如何在 CentOS 8 和 RHEL 8 系統上安裝和使用 AnsibleCentOS
- 如何在 Centos 8 / RHEL 8 上安裝和配置 VNC 伺服器CentOSVNC伺服器
- 如何在 CentOS 7 / RHEL 7 終端伺服器上安裝 KVMCentOS伺服器
- Typecho在Ubuntu 22.04上的安裝部署Ubuntu
- 在 Rocky Linux 上安裝最新的 DockerLinuxDocker