一、准备需要安装的软件:
PostgreSQL 下载:
http://get.enterprisedb.com/postgresql/postgresql-9.6.1-1-windows-x64-binaries.zip
PostGIS 下载:
http://download.osgeo.org/postgis/windows/pg96/archive/postgis-bundle-pg96-2.3.1x64.zip
如果要下载安装其他的版本,可以从官网的地址中找:
PostgreSQL 官网:
https://www.postgresql.org/download/windows/
PostGIS 官网:
http://download.osgeo.org/postgis/windows/
二、安装
1、安装PostgreSQL:
  1)解压下载好的postgresql-9.6.1-1-windows-x64-binaries.zip到安装目录(我这里就将软件安装到D:\Develop\PostgreSQL目录下)
  2)在安装目录中创建数据存放目录data(D:\Develop\PostgreSQL\data)
  3)安装和初始化数据库,执行如下命令:
D:\Develop\PostgreSQL\bin\initdb.exe -D D:\Develop\PostgreSQL\data -E UTF8 --local=Chinese
  4)执行完成之后,将PostgreSQL注册为Windows 服务方式:
 D:\Develop\PostgreSQL\bin\pg_ctl.exe register -D D:\Develop\PostgreSQL\data -NPostgreSQLServer
  注:-N表示Windows服务名称为PostgreSQLServer
  注册完成之后,如果安装正常,则可以 启动/关闭/卸载 服务:
  启动服务:

net start PostgreSQLServer
  停止服务:

net stop PostgreSQLServer
  卸载服务:

D:\Develop\PostgreSQL\bin\pg_ctl.exe unregister -D D:\Develop\PostgreSQL\data –NPostgreSQLServer
  另外,如果不想将PostgreSQL注册为Windows服务(当然我们也并不建议这样做),可以使用如下名称进行服务的开启和关闭:
  直接启动:

D:\Develop\PostgreSQL\bin\pg_ctl.exe start -w -D D:\Develop\PostgreSQL\data
  直接关闭:

D:\Develop\PostgreSQL\bin\pg_ctl.exe stop -W -D D:\Develop\PostgreSQL\data
  好了。到这里就完成了PostgreSQL的安装了。
2、创建用户、数据库,连接数据库:
  1)创建用户:

CREATE USER devUser WITH PASSWORD '123456'
    创建一个 名为 devUser,密码为123456的用户
  2)创建用户数据库:

CREATE DATABASE devdb OWNER devUser;
  3)将数据库devdb的所有权限都赋予devUser:

GRANT ALL PRIVILEGES ON DATABASE devdb TO devUser;
  4)配置远程访问:
  找到目录(D:\Develop\PostgreSQL961\data)下pg_hba.conf:
# IPv4 local connections:
#host    all             all             127.0.0.1/32            md5
host    all             all             0.0.0.0/0            md5
# IPv6 local connections:
#host    all             all             ::1/128                 md5
host    all             all             ::/0                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5
  此配置为允许任意用户从任意机器上以密码方式访问数据库,把下行添加为第一条规则:
  postgresql.conf中添加如下配置:
listening_address: '*'
  此配置为 在所有IP地址上监听,从而允许远程连接到数据库服务器
  修改完成如上配置后需要重启PostgreSQLServer服务。
  5)利用工具连接数据库:
  推荐工具:DBeaver、Navicat for PostgreSQL
  DBeaver官网:https://dbeaver.io/(推荐)
  Navicat for PostgreSQL官网:http://www.navicat.com.cn/products/navicat-for-postgresql
新增连接:
测试连接接:
连接成功。
3、安装PostGIS:
  1)解压postgis-bundle-pg96-2.3.1x64.zip到一个空目录(D:\Develop\postgis-bundle-pg96)
  2)修改makepostgisdb_using_extensions.bat配置:
  修改完成后执行脚本文件,开始安装
OK,到这里为止。PostgreSQL数据库和PostGIS扩展就已经安装完成了。然而我们还是发现了一件事,既然我们的插件已经安装成功了,为何数据库还是不支持geometry 这样的类型。不要着急,并不是我们安装失败了,而且我们没有给这个数据库开启PostGIS扩展。执行如下命名就可以搞定了:
-- Enable PostGIS (includes raster)
CREATE EXTENSION postgis;
-- Enable Topology
CREATE EXTENSION postgis_topology;
-- Enable PostGIS Advanced 3D 
-- and other geoprocessing algorithms
-- sfcgal not available with all distributions
CREATE EXTENSION postgis_sfcgal;
-- fuzzy matching needed for Tiger
CREATE EXTENSION fuzzystrmatch;
-- rule based standardizer
CREATE EXTENSION address_standardizer;
-- example rule data set
CREATE EXTENSION address_standardizer_data_us;
-- Enable US Tiger Geocoder
CREATE EXTENSION postgis_tiger_geocoder;
上面的就是PostGIS的扩展列表,当然我们也根据自己的需要只加载部分的扩展。
我们现在试着向创建一张内含地理信息几何类型列的表吧:
create table t_demo_info (
   id                   int4                 not null,
   name           int2                 not null default 0,
   type            int2                 not null default 0,
   begin_time           timestamp without time zone null,
   end_time             timestamp without time zone null,
   lng                  numeric              null,
   lat                  numeric              null,
   lnglat               geometry             null,
   constraint pk_t_demo_info primary key (id)
);
创建成功。
4、查看版本
查询PostGIS版本:select postgis_full_version();
查询PostgreSQL版本:select version();
查看PostgreSQL客户端版本:psql --version
查看PostgreSQL版本信息:show server_version;
查看PostgreSQL版本信息(包括小版本号):show server_version_num;
查看PostgreSQL版本信息(包括小版本号):select current_setting('server_version_num');
在这里需要注意的是,select current_setting('server_version_num');返回的是text,如果需要将它转换为Integer,则需要这样写:SELECT current_setting('server_version_num')::integer;

标签: PostgreSQL, PostgreSQL安装, PostGIS安装, PostGIS配置, PostgreSQL安装PostGis扩展

仅有一条评论

  1. l

    支持

添加新评论