##本文分兩部分,第一部分講linux下postgresql的安裝,第二部分講postgis的安裝
##感謝作者:https://www.linuxidc.com/Linux/2017-10/147536.htm
安裝環境:
CentOS7-x86_64
postgresql9.4
postgis2.4
步驟:
一、安裝PostgreSQL
1. 安裝rpm
[root@psql_master ~]# yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
*****可以在https://www.postgresql.org/download/linux/redhat/網址上找對應版本
2. 安裝客戶端
[root@psql_master ~]# yum install postgresql94
3. 安裝服務器端
#yum安裝postgresql,默認會建一個名為”postgres”的系統賬號,用於執行PostgreSQL;
#同時數據庫中也會生成一個名為”postgres”的數據庫用戶,且密碼已自動生成,需要進入數據庫后修改;
#PostgreSQL在數據庫用戶同名的系統賬號下登錄免密。
[root@psql_master ~]# yum install postgresql94-server
4. 初始化
[root@psql_master ~]# /usr/pgsql-9.4/bin/postgresql94-setup initdb
5. 設置開機啟動
[root@psql_master ~]# systemctl enable postgresql-9.4
6. 啟動
[root@psql_master ~]# systemctl start postgresql-9.4
7. 修改用戶密碼
#yum安裝postgresql,默認會建一個名為”postgres”的系統賬號,用於執行PostgreSQL;
[root@psql_master ~]# su - postgres
#切換用戶后,提示符變更為“-bash-4.2$”;
#同時數據庫中也會生成一個名為”postgres”的數據庫用戶,且密碼已自動生成;
#PostgreSQL在數據庫用戶同名的系統賬號下登錄免密;
-bash-4.2$ psql -U postgres
#進入數據庫后修改密碼;
postgres=# alter user postgres with password '123456';
8. 允許遠程訪問
#配置文件中,默認只能本機訪問postgresql;
#修改listen_addresses = 'localhost'為listen_addresses = '*',允許所有遠程訪問;
#修改配置文件需要重啟服務。
[root@psql_master ~]# sed -i "s|#listen_addresses = 'localhost'|listen_addresses = '*'|g" /var/lib/pgsql/9.4/data/postgresql.conf
9. 主機認證
#在第82行之后,”IPv4 local connections”下新增允許的客戶端;
#“host” 代表主機類型,第一個“all”代表db ,第二個“all”代表user ,“172.29.3.67/32” 代表client ip(0.0.0.0/0表示不限制),“trust”代表認證方式;
#認證方式除“trust”外,還有“peer”, “ident”, “md5”, “password”等,具體可參考pg-hba文件: https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html
#修改pg.hba文件需要重啟服務。
[root@psql_master ~]# vim /var/lib/pgsql/9.4/data/pg_hba.conf host all all 0.0.0.0/0 trust
##vim操作:i進入編輯狀態,esc退出編輯狀態,:wq保存並退出
##這里在后面操作過程中,可能會出現認證失敗的報錯。如下:
##可以在這pg_hba.conf,將peer處改為trust(這里測試環境,如果正式環境不建議改為trust,可改為md5)
10. 設置環境變量
[root@psql_master ~]# vim /etc/profile
##添加export PATH=$PATH:/usr/pgsql-9.4/bin
[root@psql_master ~]# source /etc/profile
11. 重啟服務
[root@psql_master ~]# systemctl restart postgresql-9.4
12. iptables
#postgresql默認開啟tcp5432端口
#這里可能有部分系統沒有iptables服務,restart時會報錯,重啟機器即可
[root@psql_master ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
[root@psql_master ~]# service iptables restart
13. 查看端口
#安裝完成后,測試看如果有5432端口即可[root@psql_master ~]# netstat -tunlp
14. 簡單使用(命令需以";"結束)
1)創建用戶
postgres=# create user postuser1 with password 'user1@123';
2)創建數據庫
#同時指定數據庫的所有者
postgres=# create database postdb1 owner postuser1;
3)數據庫賦權
#未賦權則賬戶只能登錄控制台
postgres=# grant all privileges on database postdb1 to postuser1;
4)登錄新建數據庫
#在操作系統層使用新建的賬號登錄新建的數據庫,登錄后提示符為“postdb1=>”;
#如果在postgres賬戶下直接使用“postgres=# \c postdb1;”登錄,則登錄用戶依然是postgres,
-bash-4.2$ psql -U postuser1 -d postdb1 -h 127.0.0.1 -p 5432
5)創建表
postdb1=> create table tb1( id int primary key, name VARCHAR(20), salary real );
6)插入數據
postdb1=> insert into tb1( id, name, salary) values( 101, 'Mike', 5000.00 );
7)查詢
postdb1=>select * from tb1;