近日須要將PostgreSQL數據庫從Windows中遷移到Linux中,Linux CentOS 7 安裝PostgreSQL 9.5.17 安裝過程 特此記錄。sql
數據庫:PostgreSQL 9.5.17數據庫
Linux:CentOS 7.3bash
在postgresql的官方便可找到源碼文件目錄(地址:https://www.postgresql.org/ftp/source/),在列表中找到須要下載的 9.5.17版本服務器
進入目錄,看到文件列表,選擇.tar.gz格式文件,點擊下載網絡
將下載好的數據庫安裝文件,上傳至服務器的/user/local/目錄下,而後進入該目錄,解壓安裝包。工具
# tar -zvxf postgresql-9.5.17.tar.gz post
進去解壓後的postgresql文件夾,進行編譯,並在在編譯時指定安裝目錄測試
# ./configure --prefix=/usr/local/postgresql 加密
編譯出錯spa
沒有c編譯器,安裝gcc
# yum install gcc
安裝完成後,再次執行編譯
編譯出錯
缺乏readline開發包,安裝readline-devel包:
# yum install readline-devel
安裝完成後,再次執行編譯
編譯出錯
缺乏zlib開發包,安裝zlib開發包:
# yum install zlib-devel
安裝完成後,再次執行編譯
編譯成功,成功建立建立了config.status配置文件
編譯配置完成,開始執行安裝:依次執行:
# make
# make install
編譯安裝完成
編譯安裝成功後,接下來要作的就是建立一個普通用戶,由於默認超級用戶(root)不能啓動postgresql,因此須要建立一個普通用戶來啓動數據庫,執行如下命令建立用戶:
# useradd admin
須要設置權限,將postgres的數據目錄所有賦權給admin用戶(此處我將postgres的數據目錄指定在在/usr/local/postgresql/data目錄下):
# chown -R admin:admin /usr/local/postgresql/
設置相關環境變量
此處僅僅設置admin用戶的環境變量,因此首先切換到admin用戶
切換用戶: # su - admin
而後打開.bash_profile文件並追加如下內容:
打開.bash_profile文件 : $ vi .bash_profile
追加一下內容:
PGHOME=/usr/local/postgresql export PGHOME PGDATA=/usr/local/postgresql/data export PGDATA PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin
修改完成後能夠經過 $ source ./.bash_profile 使其當即生效
檢驗環境變量是否設置正確
切換任意目錄輸入$ which psql 以及 $ psql -V 便可分別查看psql客戶端的路徑以及postgresql的數據庫版本
因爲配置了環境變量,因此此處咱們直接執行initdb命令便可完成db初始化
$ initdb
初始化成功
進入postgresql的目錄能夠看到生成的數據目錄data以及該目錄的相關數據和配置文件:
接下來修改配置文件,pg_hba.conf和postgresql.conf。一個是訪問控制配置(127.0.0.1改成信任的客戶端ip網段使其能夠遠程訪問),一個是postgresql主配置文件(listen_address=localhost改成星號使其監聽整個網絡)。
進入/usr/local/postgresql/data目錄,修改文件,這裏將pg_hba.conf的ip地址修改成0.0.0.0/0,而加密方式改成md5,就表示須要密碼訪問:
pg_hba.conf文件修改:
修改postgresql.conf文件
將listen_address=localhost改成星號使其監聽整個網絡:
同時須要放開機器的5432端口,這裏爲了方便起見,直接關閉服務器防火牆:
關閉防火牆:
$ systemctl stop firewalld
此時爲普通用戶,關閉防火牆須要root帳戶權限,須要輸入root帳戶密碼獲取權限
禁止防火牆開機啓動:
$ systemctl disable firewalld
此時爲普通用戶,取消防火牆開機啓動一樣須要root帳戶權限,須要輸入root帳戶密碼獲取權限
查看防火牆狀態:
$ systemctl status firewalld
防火牆已經關閉
至此配置相關的內容就所有完成了,最後就是啓動並鏈接數據庫了。
啓動、鏈接數據庫
在初始化數據庫結束時咱們已經看到了啓動命令
因爲以前設置了環境變量,因此已經指定了數據目錄PGDATA,-l表示日誌文件目錄,一般須要指定,因此咱們在/usr/local/postgresql根目錄下再建立一個log目錄用來存放日誌文件並賦予可寫的權限
進入 /usr/local/postgresql目錄
建立文件夾
$ mkdir log
賦予權限
$ chown -R admin:admin /usr/local/postgresql/log/
啓動數據庫
$ pg_ctl start -l /usr/local/postgresql/log/pg_server.log
啓動成功:
經過postgresql自帶的客戶端工具psql來進行鏈接(在鏈接是須要制定鏈接數據庫,這裏直接鏈接postgres數據庫):
$ psql postgres
設置admin用戶的密碼(默認爲空),用psql鏈接成功後直接輸入 \password 即會提示輸入兩次密碼,以下圖:
修改完密碼之後,就是最重要的一點就是驗證非本地客戶端工具的鏈接了,畢竟咱們是要作數據庫服務器的,這裏我選擇的工具是Navicat Premium,在主機(Windows 10)打開Navicat與虛擬機中的postgresql服務器進行鏈接測試:
能夠發現鏈接成功,同理中止數據庫可使用命令 pg_ctl stop 來關閉postgresql服務,很簡單,至此關於源碼編譯安裝postgresql就所有結束了。