一、版本信息:
CentOS版本:CentOS-7-x86_64-Minimal-1810
PostgreSQL版本: PostgreSQL 12.0
PostGIS版本:postgis31
二、PostgresSQL + PostGIS 安裝
1、官網安裝鏈接:
PostgreSQL: Linux downloads (Red Hat family)
2、升級所有包同時也升級軟件和系統內核
yum -y update
3、安裝rpm文件
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
4、安裝PostgreSQL客戶端
使用 yum search postgresql*
命令可以看到多個版本的PostgreSQL,這里我選擇了PostgreSQL12。
yum install postgresql
5、安裝PostgreSQL服務端
yum install -y postgresql12-server
6、初始化
/usr/pgsql-12/bin/postgresql-12-setup initdb
7、設置自動啟動並且啟動postgresql服務
systemctl enable postgresql-12 systemctl start postgresql-12
8、postgresql官網上有明確的操作步驟
三、創建用戶和數據庫
1、使用postgres用戶登錄(PostgresSQL安裝后會自動創建postgres用戶,無密碼)
su postgres
2、登錄postgresql數據庫
3、創建用戶和數據庫並授權
create user test_user with password '123456'; // 創建用戶 create database test_db owner test_user; // 創建數據庫 grant all privileges on database test_db to test_user; // 授權
4、退出psql(輸入 \q 再按回車鍵即可)
\q
四、開啟遠程訪問
1、修改/var/lib/pgsql/12/data/postgresql.conf文件,取消 listen_addresses 的注釋,將參數值改為“*”
2、修改/var/lib/pgsql/12/data/pg_hba.conf文件,增加下圖紅框部分內容
文件分為5列,分別是TYPE、DATABASE、USER、ADDRESS、METHOD,可以對不同IP地址的用戶設置不同數據庫的訪問權限。最后一列METHOD的解析如下:
trust 任何連接都允許,不需要密碼
reject 拒絕符合條件(前面幾個條件)的請求
MD5 接收一個MD5加密過的密碼
password 接收一個密碼來登陸,只在可信的網絡使用這種方式
gss 使用gssapi認證,只在tcp/ip連接可用
sspi 只在windows可用的一種方式
krb5 不常用,只在TCP/IP可用
ident 使用操作系統用戶名認證,驗證它是否符合請求的的數據庫用戶名
ldap 使用LDAP服務器認證
cert 使用ssl客戶端認證
pam 使用操作系統的pam模塊服務
如果要求所有IP都是使用密碼登錄,則配置為host all all 0.0.0.0/0 md5
。
注意:
默認設置 【host all all 127.0.0.1/32 ident】java程序無法通過127.0.0.1訪問數據庫。
需要修改為【host all all 127.0.0.1/32 md5】
3、切換到root用戶,重啟postgresql服務
systemctl restart postgresql-12.service
4、關閉防火牆
查看防火牆狀態 firewall-cmd --state 停止firewall systemctl stop firewalld.service 開啟firewall firewall-cmd --state 禁止firewall 開機啟動 systemctl disable firewalld.service
5、使用數據庫連接工具測試連接
五、額外補充
1、修改默認生成的 postgres 用戶密碼(此postgres非上面的postgres用戶,此為數據庫的用戶,上面的為操作系統的用戶)
su - postgres psql -U postgres alter user postgres with encrypted password '123456';
2、服務啟動、關閉、重啟、查看狀態命令
systemctl start postgresql-12.service // 啟動服務 systemctl stop postgresql-12.service // 關閉服務 systemctl restart postgresql-12.service // 重啟服務 systemctl status postgresql-12.service // 查看狀態
六、安裝postgis和pgRouting
1、安裝postgis的依賴包
rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
2、安裝postgis
yum install -y postgis31_12.x86_64
3、安裝完畢后切換為postgres用戶,開啟擴展
// 開啟插件 # su postgres # psql // 開啟pgsql的插件 postgres=# create extension postgis; postgres=# create extension postgis_topology; postgres=# create extension fuzzystrmatch; postgres=# create extension address_standardizer; postgres=# create extension address_standardizer_data_us; postgres=# create extension postgis_tiger_geocoder; //查看版本,驗證安裝是否成功 postgres=# SELECT PostGIS_full_version();
4、安裝pgRouting
使用 yum search pgrouting
命令可以看到多個版本的pgrouting,這里我選擇了pgrouting12。
yum install pgrouting_12
5、最終已安裝擴展如下: