CentOS7下安裝並簡單設定PostgreSQL筆記

來源:互聯網
上載者:User

標籤:

為什麼是PostgreSQL?

在.NET Core誕生之前,微軟平台上最常見的開發組件便是.NET Framework + SQL Server了,但是現在.NET Core終於讓跨平台部署成為了現實,這一模式還會常見嗎?個人認為這一黃金搭檔很可能會日漸勢微了,因為未來很多的.NET應用將部署在Linux上,為了使用SQL Server,人們又部署一個Windows環境嗎?想想都覺得不大可能,那麼為Linux上的.NET Core選擇一款合適的資料庫就變得非常重要。其實也不難選,因為就兩個選項,一個是MySQL(The world’s most popular open-source database),另一個是PostgreSQL(The world‘s most advanced open source database),從目前我的認知而言,我選擇了PostgreSQL。

在51job上全文檢索搜尋MySQL,有1568頁內容,而全文檢索搜尋PostgreSQL則只有44頁內容(2016年9月16日資料),這說明使用MySQL的企業和從業人員資料遠超PostgreSQL資料,那為什麼我還要選擇PostgreSQL呢?這要從三個方面談起,一是我曾學習並使用過MySQL,感覺MySQL上手容易,精通困難,一般程式員沒有經過培訓駕馭不了MySQL,當時有個項目,開發階段貌似和SQL Server區別不大,但是系統部署到生產環境之後很快效能問題就會暴露出來了,為此我不得不趕鴨子上架,邊學邊用,重構了整個資料訪問層,(有同學可能會問了,PostgreSQL可能比MySQL還要難上手,額,我最擔心的是項目組中有人SQL指令碼技術不過關,MySQL對於指令碼的最佳化做的又不咋滴...);第二是我目前對GIS應用系統比較感興趣,而PostgreSQL有一個MySQL無法比擬的優勢,那就是PostGIS,PostGIS可以完美支援空間資料儲存和空間分析;三是從PostgreSQL9.3起就內建了JSON資料類型,而9.4又開始支援JSONB,這標誌著PostgreSQL實際上已經是一個關係型資料庫和NoSQL資料庫的結合體了,而且有訊息表明,PostgreSQL的NoSQL效能有益到甚至超過了MongoDB!,這對於GIS大資料應用是多麼好的一個訊息啊。我還有什麼理由拒絕PostgreSQL呢?

 

~~~~~~~~~~~~~~~~我是分割線,以上都是廢話~~~~~~~~~~~~~~~~

安裝環境:CentOS7.2,與此處環境相同

在安裝之前,先看看官方的安裝說明總是一個好習慣

CentOS7.2中內建的PostgreSQL是9.2版本的,裡面沒有NoSQL特性,因此我們使用rpm包安裝方式,PostgreSQL的repository包地址清單在這裡。

1. 首先安裝PostgreSQL的rpm

sudo yum install http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-redhat95-9.5-2.noarch.rpm -y

2. 然後再安裝PostgreSQL伺服器和第三方擴充包

sudo yum install postgresql95-server postgresql95-contrib -y

3. 初始化資料庫

sudo /usr/pgsql-9.5/bin/postgresql95-setup initdb

4. 設定資料庫服務開機啟動並立即啟動資料庫服務

sudo systemctl enable postgresql-9.5.servicesudo service postgresql-9.5 start

5. 檢查資料庫服務狀態,有綠色,沒紅色說明啟動OK了

service postgresql-9.5 status

6. 修改postgres使用者密碼,切換到postgres使用者

sudo passwd postgres

su postgres

7. 然後使用psql工具登入資料庫,列出當前的資料庫,命令分別是 psql 和 \l 

在CentOS上,預設的PostgreSQL資料目錄是/var/lib/pgsql/版本號碼/data

PostgreSQL的設定檔就在這個目錄下/var/lib/pgsql/版本號碼/data/postgresql.confg,還有一個設定檔也需要稍加關注,那就是存取控制設定檔/var/lib/pgsql/版本號碼/data/pg_hba.conf

8. 下面需要先對服務組態檔postgresql.conf進行一些設定:

將 #listen_addresses = ‘localhost‘ 前的#號去掉,然後將後面的localhost改為*,然後將 #port = 5432 前的#去掉,最後再將 #password_encryption = on 前面的#號去掉,如所示,使用wq命令儲存退出。

(友情提示:postgresql.conf中可以修改的參數很多,中第2個紅框可以修改偵聽連接埠,另外此檔案內還可以修改緩衝大小等多種參數)

9. 再對pg_hba.conf內容進行配置,將上面紅框內的ident改為md5,然後再在最下面加入 host all all 0.0.0.0/0 md5 ,如所示:

10. 重啟postgresql-9.5服務,使設定檔重效

service postgresql-9.5 restart

11. 接下來我們建立一個資料庫

psql
CREATE DATABASE testdb;

如所示,我們就建立了一個名為testdb的資料庫,

12.然後再建立一名使用者

CREATE USER think8848 CREATEDB LOGIN PASSWORD ‘111111‘

如所示,這樣我們就建立了一個名為think8848的使用者,後面的 CREATEDB LOGIN PASSWORD ‘111111‘ 意思是這個使用者可以建立資料庫,還可以登入,他的密碼是111111

13. 接下來將testdb的所有許可權都分配給think8848同學

GRANT ALL ON DATABASE testdb TO think8848

14. 退出postgres使用者登入,命令為\q, 對,你沒看錯,就是一個反斜線和一個q

15. 開啟防火牆5432連接埠

sudo firewall-cmd --zone=public --add-port=5432/tcp --permanentsudo firewall-cmd --reload

16. 嘗試用think8848登入資料庫

psql -U think8848 -h 127.0.0.1 -p 5432 -d testdb -W

最後,再說兩個psql很常用的命令,一個\c,切換資料庫,如: \c postgres; ,它的作用和SQL Server的 use postgres; 一樣;另一個是\d,此命令是列出當前庫下所有的表。

 

17. 我打算使用PostgreSQL做資料庫伺服器,但是從沒打算使用psql當管理工具,所以還是要找個GUI的管理工具才行啊,也不知道哪個好,先隨手抓過來一個用用看,pgAdmin4,在這裡 ,

先建個Server看看都有什麼

再給起個響亮點的名稱

然後再設定管理員IP等資訊

點了Save後並沒有什麼反應,在Servers上點擊右鍵Refresh,還是沒有什麼效果,難道這貨沒有用?好吧,再試試IT人員的殺手級技巧吧,關了程式重新開啟,這時...

看起來還不錯,可以用圖形化介面管理資料庫,然後又是免費的,我們不能要求太多,對吧?

 

CentOS7下安裝並簡單設定PostgreSQL筆記

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.