信创环境GIS-安装 postgres+postgis

12 篇文章 0 订阅

前面分享了“信创环境GIS-初识信创环境"

以下是我在信创环境下安装 postgres+postgis的过程记录,可供参考。

系统为银河麒麟桌面操作系统 V10,通过“cat /proc/verion”命令查看,可以得到该系统linux内核版本信息为“Linux version 5.4.18-52-generic”,gcc版本信息为“Ubuntu 9.3.0-10kylin2”。

更新软件包列表和已安装软件的版本

sudo apt updatesudo apt upgrade

安装postgresql(初次安装后,默认生成一个名为 postgres 的数据库和一个名为 postgres 的数据库用户。这里需要注意的是,同时还生成了一个名为 postgres 的 Linux 系统用户。我们以后在操作 PostgreSQL 的时候都应该在这个新创建的 postgres 用户中进行。)

sudo apt install postgresql -y

安装成功输出

成功。您现在可以用下面的命令开启数据库服务器:pg_ctlcluster 12 main startVer Cluster Port Status Owner    Data directory              Log file12  main    5432 down   postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log

给生成的postgres用户设置密码,方便后续操作

passwd postgres

启动PostgreSQL监视器,验证是否安装成功

sudo -u postgres psql

输出以下信息证明安装成功

psql (12.9 (Ubuntu 12.9-0kylin0.20.04.1k1))输入 "help" 来获取帮助信息.postgres=#

由于默认数据存储目录挂载的硬盘磁盘空间比较小,所以将数据目录修改为挂载磁盘空间较大的目录下。

新建迁移目标文件夹

mkdir /media/data/pgdata

修改权限

sudo chown -R postgres:postgres /media/data/pgdatasudo chmod 755 -R /media/data/pgdata

停止服务

systemctl stop postgresql

查看服务状态

systemctl status postgresql

复制现有数据文件(-a将文件和文件夹权限保留在新位置,并且–v将显示详细输出)

sudo rsync -av /var/lib/postgresql/12 /media/data/pgdata

通过重命名目录备份原数据,直到确认成功后可删除

sudo mv /var/lib/postgresql /var/lib/postgresql_bak

更改Postgresql配置文件上的数据文件夹位置、修改数据库监听

sudo vi /etc/postgresql/12/main/postgresql.conf

在postgresql.conf文件下修改数据文件夹位置

找到:data_directory = '/var/lib/postgresql/12/main'

改为:data_directory = '/media/data/pgdata/12/main'

修改数据库监听

找到:#listen_addresses = 'localhost'

改为:listen_addresses = '*'

如需修改端口

找到:port = 5432

改为:port = 5431(目标端口)

修改数据库安全策略

sudo vi /etc/postgresql/12/main/pg_hba.conf

在最下方追加以下内容:

host    all             all             0.0.0.0/0               md5

启动服务

systemctl start postgresql

启动PostgreSQL监视器,验证目录迁移后是否可成功启动

sudo -u postgres psql

输出以下信息证明操作成功

psql (12.9 (Ubuntu 12.9-0kylin0.20.04.1k1))输入 "help" 来获取帮助信息.postgres=#

验证服务器上的当前数据位置设置

postgres=# SHOW data_directory;

输出目录信息

       data_directory       ----------------------------/media/data/pgdata/12/main(1 行记录)postgres=#

为数据库用户postgres设置密码

postgres=# password postgres;

允许5432端口通过防火墙,具体需要确认用的什么防火墙规则,我这里ufw未启用,用的是iptables

sudo iptables -I INPUT -p tcp --dport 5432 -j ACCEPTsudo iptables-save

确认安装成功删除 var/lib/postgresql_bak/

sudo rm -r /var/lib/postgresql_bak/

安装PostGIS

sudo apt install postgis

查看是否安装并匹配成功

sudo -u postgres psql -c "SELECT * FROM pg_available_extensions WHERE name = 'postgis';"

启动PostgreSQL监视器,进入默认数据库 postgres

sudo -u postgres psql

创建数据库postgis_test

CREATE DATABASE postgis_test;

切换到新创建数据库 postgis_test

c postgis_test

安装PostGIS扩展

CREATE EXTENSION IF NOT EXISTS postgis;

查看是否安装成功

SELECT postgis_full_version();

启动服务

systemctl start postgresql

停止服务

systemctl stop postgresql

重启服务

systemctl restart postgresql

查看服务状态

systemctl status postgresql

卸载postgresql、postgis

sudo systemctl stop postgresqlsudo apt-get --purge remove postgresql* sudo apt-get --purge remove postgis*

强制卸载

sudo dpkg --remove --force-remove-reinstreq postgresql-12

删除PostgreSQL配置文件或数据目录

sudo rm -r /etc/postgresql/ sudo rm -r /var/lib/postgresql/sudo rm -r /var/log/postgresql/

查找所有目录下包含“postgres”的文件夹

sudo find / -type d -name '*postgres*' 2>/dev/null

删除postgres用户和组

sudo userdel -r postgres sudo groupdel postgres

执行 sudo -u postgres psql 报错:

psql: 错误: 无法联接到服务器: 没有那个文件或目录    服务器是否在本地运行并且在 Unix 域套接字    "/var/run/postgresql/.s.PGSQL.5432"上准备接受联接?

一般为服务未正常启动,查看日志以确定具体报错内容

tail /var/log/postgresql/postgresql-12-main.log

我的报错:

2024-03-19 23:36:11.623 CST [12142] 致命错误:  私钥文件"/etc/ssl/private/ssl-cert-snakeoil.key"具有由所在组或全局范围访问的权限2024-03-19 23:36:11.623 CST [12142] 详细信息:  如果文件被数据库用户所拥有,它必须具有权限 u=rw (0600) 或者更低;如果被 root 所拥有,它必顼具有权限 u=rw,g=r (0640) 或者更低。2024-03-19 23:36:11.623 CST [12142] 日志:  数据库系统已关闭pg_ctl: 无法启动服务器进程

解决方法 设置权限

sudo chown postgres:postgres /etc/ssl/private/ssl-cert-snakeoil.keysudo chmod 600 /etc/ssl/private/ssl-cert-snakeoil.key

重启数据库

systemctl restart postgresql

更多信息公众号 GISERSAY

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值