在.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。php
在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呢?html
~~~~~~~~~~~~~~~~我是分割線,以上都是廢話~~~~~~~~~~~~~~~~linux
安裝環境:CentOS7.2,與此處環境相同程序員
在安裝以前,先看看官方的安裝說明老是一個好習慣sql
CentOS7.2中自帶的PostgreSQL是9.2版本的,裏面沒有NoSQL特性,所以咱們使用rpm包安裝方式,PostgreSQL的repository包地址列表在這裏。mongodb
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服務器和第三方擴展包windows
sudo yum install postgresql95-server postgresql95-contrib -y
3. 初始化數據庫(請看下面更新部分)緩存
sudo /usr/pgsql-9.5/bin/postgresql95-setup initdb
---------------------------我是分割線,2016.10.26更新開始---------------------------服務器
3. 默認狀況下,Postgresql安裝目錄是/usr/pgsql-9.5,而Postgresql的數據目錄是/var/lib/pgsql/版本號/data目錄,若是你從一開始就規劃了/var很大磁盤空間,就沒有問題,可是一旦你的/var目錄空間並不大,那麼就要考慮在安裝Postgresql時指定安裝目錄了,在本例中,咱們假定/home的空間很大。
首先在/home下建立一個Postgresql的數據目錄
sudo mkdir /home/postgresql_data
而後爲這個目錄指定全部者同時分配權限
sudo chown postgres:postgres /home/postgresql_data
sudo chmod 750 /home/postgresql_data
而後設置環境變量
export PATH=/usr/pgsql-9.5/bin:$PATH export LD_LIBRARY_PATH=/usr/pgsql-9.5/lib export PGDATA=/home/postgresql_data
而後使用命令initdb生成數據庫簇,在此之此,請切換至postgres用戶
initdb
最後嘗試啓動Postgresql服務
pg_ctl start -D $PGDATA
使用 ps -ef | grep postgres 驗證,若是有一堆postgres相關進程,那就安裝成功了。
若是就到此結束了,貌似第4步就無法作了,由於使用 systemctl start postgresql-9.5 將不會成功的,爲啥呢?請打開 sudo vi /usr/lib/systemd/system/postgresql-9.5.service ,由於在#Location of database direcotry配置節裏面沒有指定正確的PGDATA。因此咱們須要將下面的PGDATA設置成正確值
#Location of database directory Environment=PGDATA=/home/postgresql_data
---------------------------我是分割線,2016.10.26更新結束---------------------------
4. 配置數據庫服務開機啓動並當即啓動數據庫服務
sudo systemctl enable postgresql-9.5.service
sudo 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.conf,還有一個配置文件也須要稍加關注,那就是訪問控制配置文件/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 --permanent
sudo 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人員的殺手級技巧吧,關了程序從新打開,這時...
看起來還不錯,能夠用圖形化界面管理數據庫,而後又是免費的,咱們不能要求太多,對吧?