Centos7線上安裝PostgreSQL和PostGIS
一、版本資訊:
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 -y postgresql12
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
。
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 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、最終已安裝擴充套件如下: