RedHat6安装PostgreSQL9.6及Postgis2.26
目录
一、PostgreSQL rpm离线安装
1. 安装环境
RedHat 6.9/ 64位
2. 准备工作
下载RPM包
访问PostgreSQL网站,根据系统类别,系统版本选择相关的包:(这里针对Redhat6的链接,如果需要下载Redhat7的,那就修改链接中rhel6.x86_64为rhel7.x86_64),点击以下下载链接:
https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/postgresql96-9.6.10-1PGDG.rhel6.x86_64.rpm
https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/postgresql96-contrib-9.6.10-1PGDG.rhel6.x86_64.rpm
https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/postgresql96-libs-9.6.10-1PGDG.rhel6.x86_64.rpm
https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/postgresql96-server-9.6.10-1PGDG.rhel6.x86_64.rpm
https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/postgresql96-devel-9.6.10-1PGDG.rhel6.x86_64.rpm
下载的文件:
postgresql96-9.6.10-1PGDG.rhel6.x86_64.rpm
postgresql96-contrib-9.6.10-1PGDG.rhel6.x86_64.rpm
postgresql96-libs-9.6.10-1PGDG.rhel6.x86_64.rpm
postgresql96-server-9.6.10-1PGDG.rhel6.x86_64.rpm
postgresql96-devel-9.6.10-1PGDG.rhel6.x86_64.rpm(我在安装postgis的时候提示错误:Please install the PostgreSQL server development packages and re-run configure,之后才下载的安装包安装)
3. 安装PG
将上述Postgres安装包放置在同一个文件夹中, 执行安装命令:
rpm -ivh postgresql96-*.rpm
通过RPM包安装, Postgres安装程序会在/var和/usr下创建文件夹./var/lib/pgsql
: 用于存放Postgres数据库默认的数据文件夹/usr/pgsql-9.6
: 用于存放Postgres数据库的命令、依赖库及文档目录等信息/var/lib/pgsql/9.6/data
: 用户存放PG默认配置的pg_hba.conf,postgresql.conf
配置文件。
安装完成查看pg版本:
postgres --version
4. 初始化数据库
配置好数据后(如果配置了自定义路径)数据库默认是未启动状态。 需要进行初始化。
CentOS 6/Redhat 6
service postgresql-9.6 initdb
初始化数据库后,会默认在系统的目录里面初始化PG数据库
如果自定义了目录,会在/data/postgres里面初始化文件,并生成pg_hba.conf,postgresql.conf
默认情况:
/var/lib/pgsql: 用于存放Postgres数据库默认的数据文件夹
/usr/pgsql-9.6: 用于存放Postgres数据库的命令、依赖库及文档目录等信息
数据库只能本机访问,127.0.0.1 默认没有密码
/var/lib/pgsql/9.6/data : 用户存放PG默认配置的pg_hba.conf,postgresql.conf
配置文件
5. 配置数据库远程访问
PG默认只能本机访问,但是实际情况中,应用服务器多单独部署,需要开通PG的远程访问权限,且是需要配置用户密码的。
需要修改postgres.conf, pg_hba.conf文件。
如果找不到文件在哪,使用 find命令搜索:
find / -name postgresql.conf
5.1 修改postgresql.conf
主要配置参数详解:
#listen_addresses='localhost'
listen_addresses='*' --- 修改成'*'全部ip都可以访问改数据库。
5.2 修改pg_hba.conf
vi pg_hba.conf
找到如下内容:
·”local” is for Unix domain socket connections only
local all all trust
IPv4 local connections:
host all all 127.0.0.1/32 trust
在“host all all 127.0.0.1/32 trust”其后添加下面的内容
host all all 0.0.0.0/0 md5 #-- 添加本行
6. 启动数据库
启动Postgres数据库
service postgresql-9.6 start
#Starting postgresql-9.6 service: [ OK ]
7. 测试数据库
PG模式是不能用root用户访问数据库,使用时需要用su postgres
切换到postgres用户下。
使用psql命令进行测试。
psql命令详解:
-h host, 指定连接的Postgres数据库IP地址
-U username: 指定连接数据库的用户名
-d database: 指定连接的数据库名
-p port: 指定数据库连接的服务端口
-w: 表示不提示用户输入密码
-W : 表示验证数据库用户密码
-l : 表示列出Postgres可用的数据库信息
示例如下:
su - postgres # -- root 切换到postgres
psql -h localhost -U postgres -d postgres -W
#Password for user postgres:
#psql (9.6.10)
#Type "help" for help.
#
使用默认脚本service postgresql initdb或/usr/pgsql-9.6/bin/postgresql96-setup initdb初始化数据库时,需要修改用户的密码。在修改Postgres用户密码时,需要确保以下条件:
配置”pg_hba.conf”时需要确定服务器本地址的验证方法为trust, 即:
host all all 127.0.0.1/32 trust
如果为peer|indent|md5方法时,需要将其修改为trust, 否则登录时会提醒输入用户密码。
修改默认的postgres用户密码
切换系统用户为postgres, 通过psql -h localhost -U postgres -d postgres登录Postgres数据库,进入数据后,使用SQL
alter user postgres with password 'newpassword'
来为用户修改默认密码。
示例如下:
su - postgres # -- root 切换到postgres
psql -h localhost -U postgres -d postgres -w
postgres=# alter user postgres with password 'newpassword';
#ALTER ROLE
8. PG开机自启动
postges默认不自动启动,使用以下命令打开。
chkconfig postgresql-9.6 on
9. Postgres日常服务管理
启动数据库:pg_ctl start -D /data/postgres
重启数据库: pg_ctl restart -D /data/postgres
停止数据库:pg_ctl stop -D /data/postgres
强制重启:pg_ctl restart -D /data/postgres -m f
强制停止:pg_ctl stop -D /data/postgres -m f
加载配置:pg_ctl reload -D /data/postgres
显示服务状态:pg_ctl status -D /data/postgres
连接数据库: psql -h 127.0.0.1 -U postgres -p 5432 -d postgres -W
二、Postgis离线安装
1 准备源码包
准备gdal、proj、geos和postgis的源码包,postgis版本注意和postgresql保持兼容。
Pg和Postgis的版本需要兼容,具体信息请看:http://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS
安装包可以使用以下链接进行下载:
http://download.osgeo.org/gdal/2.2.3/gdal-2.2.3.tar.gz
http://download.osgeo.org/proj/proj-4.8.0.tar.gz
http://download.osgeo.org/geos/geos-3.3.3.tar.bz2
http://download.osgeo.org/postgis/source/postgis-2.2.6.tar.gz
将下载的文件拷贝到服务器,所需文件如下:
gdal-2.2.3.tar.gz
proj-4.8.0.tar.gz
geos-3.3.3.tar.bz2
postgis-2.2.6.tar.gz
2 解压编译安装gdal、proj、geos和postgis
依次解压、编译、安装以上软件包。
$ tar xf gdal-2.2.3.tar.gz && cd gdal-2.2.3 && ./configure --prefix=/usr/local/gdal && make && sudo make install
$ tar xf proj-4.8.0.tar.gz && cd proj-4.8.0 && ./configure --prefix=/usr/local/proj && make && sudo make install
$ tar xf geos-3.3.3.tar.bz2 && cd geos-3.3.3 && ./configure --prefix=/usr/local/geos && make && sudo make install
$ tar xf postgis-2.2.6.tar.gz && cd postgis-2.2.6 && ./configure -prefix=/usr/local/postgis --with-geosconfig=/usr/local/geos/bin/geos-config --with-projdir=/usr/local/proj --with-gdalconfig=/usr/local/gdal/bin/gdal-config && make && sudo make install
3 配置ldconfig
将gdal、proj、geos的lib目录添加到ldconfig。
#vi /etc/ld.so.conf
include ld.so.conf.d/*.conf
#添加以下内容
/usr/local/gdal/lib/
/usr/local/proj/lib/
/usr/local/geos/lib/
执行 ldconfig命令即可。
4 创建空间数据库模板
# 创建无空间特性数据库
postgres $ createdb txhglgj
# 创建相关空间数据库相关的函数,类型,操作符等
postgres $ psql -f /usr/pgsql-9.6/share/contrib/postgis-2.2/postgis.sql -d txhglgj
postgres $ psql -f /usr/pgsql-9.6/share/contrib/postgis-2.2/rtpostgis.sql -d txhglgj
# 验证空间数据库版本
postgres $ psql txhglgj
psql (9.6.10)
输入 "help" 来获取帮助信息.
txhglgj=# select postgis_full_version();
postgis_full_version
---------------------------------------------------------------------------------------------------------------------------------------------
POSTGIS="2.2.6 r16006" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.8.0, 6 March 2012" GDAL="GDAL 2.2.3, released 2017/11/20" LIBXML="2.9.1" RASTER
(1 行记录)
txhglgj=# \d
关联列表
架构模式 | 名称 | 型别 | 拥有者
----------+-------------------+--------+----------
public | geography_columns | 视观表 | postgres
public | geometry_columns | 视观表 | postgres
public | raster_columns | 视观表 | postgres
public | raster_overviews | 视观表 | postgres
public | spatial_ref_sys | 资料表 | postgres
(5 行记录)
5. 简单测试
测试点(0, 0)是否在指定的多边形内。
new_database=# select ST_Within(ST_GeomFromText('POINT(0 0)', 4326), ST_GeomFromText('POLYGON((1 1, 1 -1, -1 -1, -1 1, 1 1))', 4326)) ;
st_within
-----------
t
(1 行记录)
内容参考于:
https://www.jianshu.com/p/816141e62830
https://www.cnblogs.com/fanzhidongyzby/p/8279891.html
转载自:https://blog.csdn.net/yzj_xiaoyue/article/details/84936530