远程部署 openGauss 和安装 PostGIS 插件的完整指南:Windows 系统访问教程
一、简介
openGauss 是一个开源的企业级数据库系统,特别适用于大数据和高并发场景。它基于PostgreSQL,并结合了多项性能增强和安全特性。本指南将详细介绍如何在Linux系统上安装和配置openGauss。
二、环境装备
- 操作系统: Linux (CentOS 7)
- openGauss版本: 3.1.0 极简版
- openGauss Connectors:JDBC_5.0.3
- 依赖库: gcc, proj, Geos, libxml, json-c等
- 硬件要求: 我的配置为2 CPU核,2 GB内存,20GB存储空间
- 远程调用工具:Finalshell
- 数据库可视化工具:dbeaver
三、开始安装
1.配置linux环境
- 安装对应的依懒包
yum installbzip2wgetvim python3 libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core readline-devel libnsl -y
- 上述命令安装了一系列在Linux系统上常用的开发工具和依赖库:
# bzip2: 一种文件压缩和解压工具,通常用于处理 .bz2 压缩文件。# wget: 一个常用的命令行工具,用于从网络下载文件,支持HTTP、HTTPS和FTP协议。# vim: 一个功能强大的文本编辑器,用于在终端中编辑文本文件。# python3: Python 编程语言的第3版解释器,许多现代应用程序和脚本都依赖它。# libaio-devel: 异步I/O的开发库,提供异步I/O的支持,通常用于数据库和高性能应用程序。# flex: 一种词法分析生成工具,用于自动生成词法分析器。# # bison: 解析器生成工具,通常与 flex 搭配使用,负责将语法规则编译成解析器代码。# ncurses-devel: 一个开发库,用于在终端上创建文本用户界面(TUI)。# glibc-devel: GNU C库的开发包,包含开发应用程序所需的头文件和符号库。# patch: 用于将补丁(patch)文件应用到源代码,常用于软件更新或bug修复。# redhat-lsb-core: 提供Linux Standard Base相关的核心文件和工具,确保软件在不同Linux发行版之间的兼容性。# readline-devel: 提供了GNU readline库的开发文件,该库为应用程序提供了命令行编辑功能(# libnsl: 提供了NIS(网络信息服务)库,支持一些较旧的网络服务。
- 检查虚拟机的防火墙是否关闭
# 查看防火墙状态:
systemctl status firewalld
# 关闭防火墙:
systemctl stop firewalld.service
# 开启防火墙:
systemctl start firewalld.service
- 这样显示说明防火墙已关闭
2.下载openGauss安装包
- 从openGauss官网下载所需的版本。你可以选择 minimal 或者 完整版。下载之后,将压缩包上传到目标Linux中。
# 假设已经上传到 /opt/software 目录cd /opt/software
tar -zxvf openGauss-3.1.0-minimal.tar.gz
- 通过linux命令wget直接下载opengauss
# 创建openGauss文件夹mkdir -p /opt/software/openGaus
# 进入openGausscd /opt/software/openGaus
# 下载openGauss压缩包wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.1.0/x86/openGauss-3.1.0-CentOS-64bit.tar.bz2
- 将安装包解压到指定目录
# 进入openGausscd /opt/software/openGaus
# 解压到指定的目录 /opt/software/openGausstar -jxf openGauss-5.0.0-CentOS-64bit.tar.bz2 -C /opt/software/openGauss
3. 安装依赖包
- 以下命令都用root用户执行
- 创建安装用户和组
groupadd dbgrp && adduser omm -p 123456 -g dbgrp
- 创建用户和组的用意
# 登录系统:用户 omm 可以通过终端或其他登录方式(如 SSH)登录到 Linux 系统。# 文件和目录管理:用户可以创建、修改和删除其主目录下的文件和目录。用户的权限取决于其所属的组(在这个例子中是 dbgrp)和文件的权限设置。# 运行程序:用户可以执行安装在系统中的应用程序,前提是其有权限访问这些程序。# 访问组资源:由于用户 omm 被添加到 dbgrp 用户组中,它可以访问分配给该组的资源和文件(如果有设置相应的权限)。# 使用组权限:用户可以继承组的权限,从而能够访问和操作属于 dbgrp 组的文件和目录。
- 将omm设置为sudoer
vim /etc/sudoers
- 修改 /etc/sudoers 文件,找到下面一行,在 root 下面添加一行,如下所示
root ALL=(ALL) ALL
# 这里添加的NOPASSWD: 是指从omm用户切换到root用户时使用su root命令,添加后在切换回root时不需要在输入密码
omm ALL=(ALL) NOPASSWD: ALL
- 这里因为是修改的只读文件,所以要强制保存退出
- 为omm用户赋予软件目录权限
chmod -R 777 /opt/software/
- 注意事项
# chmod:更改文件或目录的权限命令。# -R:表示递归(recursive),意味着将权限更改应用于指定目录及其所有子项。# 777:设置权限为 rwxrwxrwx,即所有用户(拥有者、用户组、其他用户)都拥有读(r)、写(w)和执行(x)权限。# /opt/software/:指定要更改权限的目标目录。
- 修改kernel.sem值(用轻量安装里的方法也可以)
sysctl -w kernel.sem="250 85000 250 330"
- 注意事项
# sysctl:用于查看和修改 Linux 内核的运行时参数。# -w:表示写入一个新的值。# kernel.sem:这是一个与信号量相关的内核参数,格式为四个整数值。
- 使设置生效
sysctl -p
- 进入解压目录并且切换omm用户
cd /opt/software/openGauss/simpleInstall
# 切换到omm用户su omm
- 执行install.sh脚本安装openGauss极简版安装包 单节点安装
sh install.sh -w "openGauss@123"&&source ~/.bashrc
- 注意事项
# 这部分执行 install.sh 脚本,并传递 -w "openGauss@123" 参数。通常,这个脚本用于安装某个软件或配置系统,-w 可能表示设置一个加密方式或其他配置项。
- 这里提示就输入
yes
- 因为我们使用要Windows下的dbeaver远程访问部署在linux系统下的openGauss数据库,在这里先配置为后续dbeaver远程连接做好准备
# 我们需要使用omm用户进入openGuass文件夹中的postgresql.conf配置文件进行修改cd /opt/software/openGauss/data/single_node
- 注意事项
# 让数据库服务器接受来自所有网络接口的连接请求。
listen_addresses ='*'# 指定数据库的默认端口号
port =5432
- 还需进入openGuass文件夹中的pg_hba.conf配置文件进行修改
cd /opt/software/openGauss/data/single_node
- 注意事项
# host: 表示这条规则适用于 TCP/IP 连接。# all: 第一个 all 指所有数据库。# all: 第二个 all 指所有用户。# 0.0.0.0/0: 表示允许来自任何 IP 地址的连接。# MD5: 表示使用 MD5 散列算法进行密码验证。
- 修改完上述两个配置文件后我们需要重启数据库
# 查看数据库运行状态
gs_ctl status -D /opt/software/openGauss/data/single_node
# 停止数据库
gs_ctl stop -D /opt/software/openGauss/data/single_node
# 开启数据库
gs_ctl start -D /opt/software/openGauss/data/single_node
4.在linux下登录openGauss数据库
- 安装执行完成后,使用ps和gs_ctl查看进程是否正常
ps ux |grep gaussdb
- 出现即安装成功
- 使用omm管理员用户登录openGauss
# -d 输入你的数据库名称 -U 输入你的用户名 -W 输入你的密码
gsql -d postgres -U omm -W '123456'
- 登录成功
- 连接到postgres数据库【数据库端口默认5432】
- 此时我们需要给数据库增加一个admin用户并赋予对应权限
# 创建新用户
CREATE USER admin WITH PASSWORD 'admin@123456';# 赋予对应权限
GRANT CONNECT ON DATABASE postgres TO admin;
GRANT ALL PRIVILEGES ON DATABASE postgres TO admin;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO admin;
- 测试该用户是否能登录
gsql -d postgres -U admin -W 'admin@123456'
5.使用Dbeaver远程连接openGauss
- dbeaver下载地址:https://dbeaver.io/![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dc02314ce3ce4ff8ad45ea59943222ed.png)
- 使用dbeaver安装openGauss驱动教程请点击下面链接(来自博友"you秀"分享的)链接地址:
https://blog.csdn.net/weixin_43441262/article/details/137561236
- 配置驱动成功后,尝试使用dbeaver连接openGuass
- 如果你正常连接成功的话就不必管下面的步骤了
- 如果点击测试连接后出现以下报错
- 说明可能是我们的用户名或密码填写错误,但我的情况dbeaver和openGauss之间的密码加密方式不同导致的连接错误
# 我们回到linux系统中,切换omm用户输入以下内容# 我们可以修改password_encryption_type的参数值为1或0,这个时候我们配置md5,其实也是可以适用。
gs_guc reload -D /opt/software/openGauss/data/single_node/ -c "password_encryption_type=0";
- 但是在客户端测试连接的时候,仍然报Invalid username/password错误。刚开始以为是bug的,但是经过查看password_encryption_type的参数介绍,当修改改参数的配置不会自动触发已有用户密码加密方式的修改,只会影响新创建用户或修改用户密码操作。所以我们需要执行修改数据库用户命令,同时会有如下的提示。
alter user test identified by 'openGauss@2024';
- 执行成功后我们再次修改admin用户的密码
ALTER ROLE admin WITH PASSWORD 'abc@123456';
- 此时我们重新使用dbeaver连接openGauss后显示连接成功了
6.安装PostGis插件
- 可以参考博友 Gauss松鼠会(https://blog.csdn.net/GaussDB/article/details/128670415)的文章来进行操作
- PostGIS是PostgreSQL的空间数据库扩展。因为下载的openGauss默认提供PostGIS版本为2.4.2,需要单独安装插件。
- 我们使用的环境信息:Centos 7.6 + openGauss 3.1.0 极简版
- 首先我们查看自己gcc的编译器版本号,我的是更新后的版本,如若你的也是7.3.0可跳过安装gcc步骤
- 安装gcc-7.3.0
# 我们先切换到切换并创建到gcc目录下cd /opt/software/
# 创建gcc文件夹mkdir gcc
# 下载压缩包wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
# 解压到[omm@openGhostxx gcc-7.3.0]$ tar -zxvf gcc-7.3.0.tar.gz
# 进入gcc-7.3.0目录下[omm@openGhostxx packages]$ cd gcc-7.3.0
# 用于自动下载和安装编译 GCC 所需的依赖库,包括 GMP、MPFR 和 MPC 等。[omm@openGhostxx gcc-7.3.0]$ ./contrib/download_prerequisites
# 将根据指定的选项生成适用于当前环境的构建脚本,方便后续编译和安装 GCC。
./configure --prefix=/usr/local/gcc-7.3.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib --disable-libsanitizer --disable-libcilkrts
# 在进行make,需要等待较长时间...makemakeinstall
- 注意以下路径,后续需要使用到
- 设置对应的环境变量,不然gcc -v还是旧版本
# 在vim编辑器中打开~/.bashrc文档vi ~/.bashrc
# 将下面信息写入文件中,注![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/15f0f58168d24ac48605b64080f88182.png)
意路径与自己电脑的路径是否相同
exportCC=/opt/software/gcc/gcc-7.3.0/gcc/bin/gcc
exportCXX=/opt/software/gcc/gcc-7.3.0/gcc/bin/g++
exportLD_LIBRARY_PATH=/opt/software/gcc/gcc-7.3.0/gcc/lib/../lib64:$LD_LIBRARY_PATHexportPATH=/opt/software/gcc/gcc-7.3.0/gcc/bin:$PATH
- 然后执行下面代码,即可生效
source ~/.bashrc
- 最后使用gcc-v查看自己电脑的版本是否更换
- PostGIS依懒库的安装
- 下载postgis插件包并解压重命名,并从官网上下载并打入补丁。
[omm@openGhostxx ~]$ cd$GAUSSHOME/
# 下载压缩包[omm@openGhostxx openGauss]$ wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/dependency/postgis-xc-master-2020-09-17.tar.gz
# 解压[omm@openGhostxx openGauss]$ tar -zxvf postgis-xc-master-2020-09-17.tar.gz
# 重命名[omm@openGhostxx openGauss]$ mv postgis-xc-master postgis-xc/
# 先创建这个文件,再根据链接下载postgis_2.4.2-2.patch
https://gitee.com/opengauss/openGauss-third_party/blob/master/gpl_dependency/postgis/postgis_2.4.2-2.patch
# 切换到该目录下cd$GAUSSHOME/postgis-xc/
# 根据 postgis_2.4.2-2.patch 中的差异信息对 postgis-xc 目录中的相关文件进行修改,以实现对 PostGIS 的某些修复或改进。[omm@openGhostxx postgis-xc]$ patch -p1 <$GAUSSHOME/postgis_2.4.2-2.patch
# 先创建extension_dependency.h,将下载postgis依赖头文件保存到$GAUSSHOME/include/postgresql/server/中
https://gitee.com/opengauss/openGauss-third_party/blob/master/gpl_dependency/postgis/extension_dependency.h
- 编译proj
# PROJ框架在做投影,坐标系转换时,其操作风格类似于Linux Shell命令。cd$GAUSSHOME/postgis-xc/proj-4.9.2
chmod +x ./configure
./configure --prefix=$GAUSSHOME/install/proj
make -sj
makeinstall -sj
- 编译Geos
# GEOS的前身是JTS,JTS提供了全功能的,强大的空间操作和空间判断。cd$GAUSSHOME/postgis-xc/geos-3.6.2
chmod +x ./configure
./configure --prefix=$GAUSSHOME/install/geos
make -sj
makeinstall -sj
- 编译libxml
# libxml是一个用于解析xml文件的库,在各个平台下都能使用,也支持多种语言。cd$GAUSSHOME/postgis-xc/libxml2-2.7.1
chmod +x ./configure
./configure --prefix=$GAUSSHOME/install/libxml2
make -sj
makeinstall -sj
- 安装JSON-C
# SON-C实现了一个引用计数对象模型,它允许您轻松地使用C语言来构建JSON对象,将它们输出为JSON格式的字符串,并将JSON格式字符串解析回JSON对象的C语言表示形式。cd$GAUSSHOME/postgis-xc/json-c-json-c-0.12.1-20160607
chmod +x ./configure
./configure --prefix=$GAUSSHOME/install/json
make -sj
makeinstall -sj
- 安装PostGis
cd$GAUSSHOME/postgis-xc/postgis-2.4.2
chmod +x ./configure
./configure --prefix=$GAUSSHOME/install/postgis2.4.2 --with-pgconfig=$GAUSSHOME/bin/pg_config --with-projdir=$GAUSSHOME/install/proj --with-geosconfig=$GAUSSHOME/install/geos/bin/geos-config --with-jsondir=$GAUSSHOME/install/json --with-xml2config=$GAUSSHOME/install/libxml2/bin/xml2-config --without-raster --without-topology CFLAGS='-O2 -fpermissive -DPGXC -pthread -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -DMEMORY_CONTEXT_CHECKING -w'CC=g++
make -sj
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b61e50e987b84d9284068b1d2e93b6cd.png)makeinstall -sj
- 执行完后,显示这个即安装成功
- 使用omm用户执行下面的语句,这些步骤的目的是将 PostGIS 所需的库文件和扩展文件正确地安装到 openGauss 的相应目录,以确保 PostGIS 能够正常运行,支持空间数据的处理。
mv$GAUSSHOME/lib/postgresql/postgis-2.4.so $GAUSSHOME/install/postgis-2.4.so
cp$GAUSSHOME/install/postgis-2.4.so $GAUSSHOME/lib/postgresql/postgis-2.4.so
cp$GAUSSHOME/install/json/lib/libjson-c.so.2 $GAUSSHOME/lib/libjson-c.so.2
cp$GAUSSHOME/install/geos/lib/libgeos_c.so.1 $GAUSSHOME/lib/libgeos_c.so.1
cp$GAUSSHOME/install/proj/lib/libproj.so.9 $GAUSSHOME/lib/libproj.so.9
cp$GAUSSHOME/install/geos/lib/libgeos-3.6.2.so $GAUSSHOME/lib/libgeos-3.6.2.so
cp$GAUSSHOME/install/postgis2.4.2/lib/liblwgeom-2.4.so.0 $GAUSSHOME/lib/liblwgeom-2.4.so.0
cp$GAUSSHOME/postgis-xc/postgis-2.4.2/postgis--2.4.2.sql $GAUSSHOME/share/postgresql/extension/postgis--2.4.2.sql
cp$GAUSSHOME/postgis-xc/postgis-2.4.2/postgis.control $GAUSSHOME/share/postgresql/extension/postgis.control
- 最后我们重启数据库即可
gs_ctl stop -D /opt/software/openGauss/data/single_node/
gs_ctl start -D /opt/software/openGauss/data/single_node/
HOME/lib/libgeos-3.6.2.so
cp $GAUSSHOME/install/postgis2.4.2/lib/liblwgeom-2.4.so.0 $GAUSSHOME/lib/liblwgeom-2.4.so.0
cp $GAUSSHOME/postgis-xc/postgis-2.4.2/postgis–2.4.2.sql $GAUSSHOME/share/postgresql/extension/postgis–2.4.2.sql
cp $GAUSSHOME/postgis-xc/postgis-2.4.2/postgis.control $GAUSSHOME/share/postgresql/extension/postgis.control
- 最后我们重启数据库即可
```bash
gs_ctl stop -D /opt/software/openGauss/data/single_node/
gs_ctl start -D /opt/software/openGauss/data/single_node/
版权归原作者 Azir_2078 所有, 如有侵权,请联系我们删除。