数据库安装PostgreSQL+postgis(数据库安装出现防火墙警告)

deer332025-08-18技术文章32

第一章 数据库安装PostgreSQL+postgis

一、PostgreSQL(postgres用户启动)

一.1解压(root用户)

mkdir /usr/local/pgsql

cd /usr/local/pgsql

ll

chmod -R 777 /usr/local/pgsql

# 将postgresql-12.5.tar.gz压缩包将放入/usr/local/pgsql/目录进行解压

cd /usr/local/pgsql

ll

chmod -R 777 /usr/local/pgsql

tar -zxvf /usr/local/pgsql/postgresql-12.5.tar.gz

# 对解压后的文件夹重命名为 postgresqlaz

mv /usr/local/pgsql/postgresql-12.5 /usr/local/pgsql/postgresqlaz

chmod -R 777 /usr/local/pgsql

一.2安装(root用户)

cd /usr/local/pgsql/postgresqlaz

ll

./configure

卡顿一会(2分钟),如下图所示

卡顿完成,继续安装

make

make install

一.3创建postgres用户(root用户)

adduser postgres

在root用户下执行设置密码(不要设置特殊符号比如@、#)

passwd postgres

sudo visudo

# 在 visudo 编辑器中,在最后添加以下行:

postgres ALL=(ALL) NOPASSWD: ALL

一.4创建数据文件、日志目录(root用户)

mkdir /usr/local/pgsql/data

mkdir /usr/local/pgsql/logs

mkdir /usr/local/pgsql/logs/pg_log

# 授权(用户和组)

chown postgres:postgres /usr/local/pgsql/data

chown postgres:postgres /usr/local/pgsql/logs

chown postgres:postgres /usr/local/pgsql/logs/pg_log

chmod -R 777 /usr/local/pgsql

一.5root用户切换至postgres用户初始化/启动数据库

su - postgres

# 初始化数据库(清除数据库所有数据)

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &

一.6查看进程(postgres用户)

ss -nltp | grep 5432

ss -nltp | grep postgres

一.7重启数据库(postgres用户)

/usr/local/pgsql/bin/pg_ctl stop -D /usr/local/pgsql/data

ss -nltp | grep postgres

/usr/local/pgsql/bin/pg_ctl restart -D /usr/local/pgsql/data

ss -nltp | grep postgres

一.8修改配置文件postgresql.conf

find /usr/local/pgsql -name "postgresql.conf"

# 拷贝到本机修改完,再贴回去/usr/local/pgsql/data/postgresql.conf

一.9修改配置文件pg_hba.conf

find /usr/local/pgsql -name "pg_hba.conf"

# 拷贝到本机修改完,再贴回去/usr/local/pgsql/data/pg_hba.conf

一.10环境变量设置

echo 'export PATH=$PATH:/usr/local/pgsql/bin' | sudo tee -a /etc/profile

# 使其生效

source /etc/profile

sudochmod -R 777 /usr/local/pgsql

一.11设置密码/usr/local/pgsql/bin/psql -U postgres

ALTER USER postgres WITH PASSWORD '设置的密码';

\q

一.12重启数据库(postgres用户)

ss -nltp | grep 5432

/usr/local/pgsql/bin/pg_ctl stop -D /usr/local/pgsql/data

sudo chmod 0700 /usr/local/pgsql/data

sudo chown -R postgres:postgres /usr/local/pgsql/data

sudochmod -R 777 /usr/local/pgsql

sudo -u postgres /usr/local/pgsql/bin/pg_ctl restart -D /usr/local/pgsql/data

ss -nltp | grep 5432

二、postgis

二.1安装geos

su - root

mkdir /usr/local/geos

cd /usr/local/geos

#将geos-3.8.0.tar.bz2压缩包将放入 /usr/local/geos/目录

tar jxf /usr/local/geos/geos-3.8.0.tar.bz2

mv geos-3.8.0 geosaz

cd geosaz

./configure --prefix=/usr/local/geos

make

耐心等待,直至出现下述内容。

make install

二.2安装proj

find / -name "*pkgconfig*"

echo 'export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:$PKG_CONFIG_PATH' >> ~/.bashrc

source ~/.bashrc

mkdir /usr/local/proj4

cd /usr/local/proj4

#将proj-6.2.0.tar.gz压缩包将放入 /usr/local/proj4/目录

tar zxvf /usr/local/proj4/proj-6.2.0.tar.gz

mv proj-6.2.0 projaz

cd /usr/local/proj4/projaz

./configure --prefix=/usr/local/proj4

make

耐心等待一会

make install

二.3安装gdal

mkdir /usr/local/gdal

cd /usr/local/gdal

#将gdal-3.0.2.tar.gz压缩包将放入/usr/local/gdal/目录

tar zxvf /usr/local/gdal/gdal-3.0.2.tar.gz

mv gdal-3.0.2 gdalaz

cd gdalaz

./configure --prefix=/usr/local/gdal --with-proj=/usr/local/proj4/

半个小时

make

make install

二.4环境变量设置

source ~/.bash_profile

cat ~/.bash_profile

二.5验证有无安装成功(环境变量有无设置成功)

geos-config --version

proj --version

gdalinfo --version

二.6配置postgis

二.6.1解压

mkdir /usr/local/postgis

cd /usr/local/postgis

#将postgis-3.0.0.tar.gz压缩包将放入/usr/local/postgis/目录

tar zxvf postgis-3.0.0.tar.gz

mv postgis-3.0.0 post

二.6.2授权

cd /usr/local/postgis/post

ll

sudo chmod -R 755 /usr/local/postgis

sudo chown -R postgres:postgres /usr/local/postgis/post

二.6.3安装

需要json-c-devel (find / -name "*json-c.pc*")

rpm -q json-c json-c-devel

PKG_CONFIG_PATH="/usr/lib64/pkgconfig:/usr/local/pgsql/lib/pkgconfig:/usr/local/proj4/lib/pkgconfig:/usr/local/gdal/lib/pkgconfig" \

./configure \

--with-pgconfig=/usr/local/pgsql/bin/pg_config \

--with-geosconfig=/usr/local/geos/bin/geos-config \

--with-projdir=/usr/local/proj4 \

--with-gdalconfig=/usr/local/gdal/bin/gdal-config \

--without-raster

make

make install

二.6.4修改配置文件ld.so.conf

vi /etc/ld.so.conf

# 添加

/usr/local/proj4/lib/pkgconfig

/usr/local/pgsql/lib

/usr/local/geos/lib/

/usr/local/proj4/lib/

# 使修改生效

ldconfig

二.6.5添加postgis引擎扩展

/usr/local/pgsql/bin/psql -U postgres -c "CREATE EXTENSION postgis;"

/usr/local/pgsql/bin/psql -U postgres -c "SELECT PostGIS_full_version();"

至此,postgresql与postgis已安装完成,可使用工具进行连接使用。

三、PostgreSQL(访问控制)

三.1查看配置文件postgresql.conf和pg_hba.conf

# 修改监听地址(允许所有 IP)

sudo vi /usr/local/pgsql/data/postgresql.conf

# 修改以下行:

listen_addresses = '*' # 或指定 IP,如 '192.168.5.142'

port = 5432

# 修改客户端认证规则

sudo vi /usr/local/pgsql/data/pg_hba.conf

# 最后添加一行:

host all all 0.0.0.0/0 md5

# 重启服务

su - postgres

sudo -u postgres /usr/local/pgsql/bin/pg_ctl restart -D /usr/local/pgsql/data

/usr/local/pgsql/bin/pg_ctl status -D /usr/local/pgsql/data

三.2本地连接测试(在服务器端执行)

sudo -u postgres /usr/local/pgsql/bin/psql -d postgres

三.3远程连接测试(在客户端)

/usr/local/pgsql/bin/psql -h 192.168.5.142 -p 5432 -U postgres -d postgres

三.4开放5432 端口(CentOS/Kylin)

sudo systemctl start firewalld

sudo firewall-cmd --add-port=5432/tcp --permanent

sudo firewall-cmd --reload

sudo systemctl disable firewalld

# 验证端口可达性(在客户端执行)

telnet 192.168.5.142 5432