信创(统信)系统上的软件安装及软件使用手册

一.各软件的安装文档

1.达梦数据库在统信系统上的安装

官方手册:https://eco.dameng.com/document/dm/zh-cn/start/install-dm-linux-prepare.html

 

1.1下载安装包

        官网:https://www.dameng.com/list_103.html

点击”服务与合作”--> “下载中心”

这里选择对应的cpu和操作系统(举个例子:windows版本的就用这个)

这里有用于统信系统的达梦安装包

链接:https://pan.baidu.com/s/18czOorWAi8-C22c6Hi8TZw

提取码:txxt


1.2安装

在安装前,我们需要先创建一个新的达梦用户以及一些准备工作

新建 dmdba 用户

注意

安装前必须创建 dmdba 用户,禁止使用 root 用户安装数据库。

1.创建用户所在的组,命令如下:

groupadd dinstall

2.创建用户,命令如下:

useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

  1. 修改用户密码,命令如下:

passwd dmdba

修改文件打开最大数
重启服务器后永久生效

使用 vi 编辑器打开 /etc/security/limits.conf 文件,命令如下:

vi /etc/security/limits.conf

在最后添加四条语句,需添加的语句如下:

dmdba hard nofile 65536

dmdba soft nofile 65536

dmdba hard stack 32768

dmdba soft stack 16384

切换到 dmdba 用户,查看是否生效,命令如下:

su - dmdba

ulimit -a

设置参数临时生效

可使用 dmdba 用户执行如下命令,使设置临时生效:

ulimit -n 65536

安装DM

用户应登录或切换到安装系统用户,进行以下安装步骤的操作(注:不建议使用 root

系统用户进行安装)。

在/home目录下创建 /dmdba文件夹,用来安装 DM 数据库。命令如下:

mkdir /home/dmdba

将 DM 安装光盘放入光驱,然后加载(mount)光驱。一般可以通过执行下面的命令来

加载光驱:

mount /dev/cdrom /home/dmdba

这里假定光驱对应的文件为/dev/cdrom 且目标路径/home/dmdba 已存在。

加载(mount)光驱后,在/home/dmdba 目录下存在 DMInstall.bin 文件

将新建的安装路径目录权限的用户修改为 dmdba,用户组修改为 dinstall。命令如下:

chown dmdba:dinstall -R /home/dmdba/

给安装路径下的文件设置 755 权限。命令如下:

Copychmod -R 755 /home/dmdba

切换至 dmdba 用户下,在 /home 目录下使用命令行安装数据库程序,依次执行以下命令安装 DM 数据库。

su - dmdba

cd /home/

./DMInstall.bin -i

按需求选择安装语言,默认为中文。本地安装选择【不输入 Key 文件】,选择【默认时区 21】。

选择【1-典型安装】,按已规划的安装目录 /home/dmdba 完成数据库软件安装,不建议使用默认安装目录。

数据库安装大概 1~2 分钟,数据库安装完成后,显示如下界面。

数据库安装完成后,需要切换至 root 用户执行上图中的命令/dm8/script/root/root_installer.sh 创建 DmAPService,否则会影响数据库备份。

1.3配置环境变量

切换到 root 用户进入 dmdba 用户的根目录下,配置对应的环境变量。DM_HOME 变量和动态链接库文件的加载路径在程序安装成功后会自动导入。命令如下:

export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

编辑 .bash_profile,使其最终效果如下图所示:

cd /home/dmdba/

vim .bash_profile

切换至 dmdba 用户下,执行以下命令,使环境变量生效。

su - dmdba

source .bash_profile

1.4配置实例

使用 dmdba 用户配置实例,进入到 DM 数据库安装目录下的 bin 目录中,使用 dminit 命令初始化实例。

dminit 命令可设置多种参数,可执行如下命令查看可配置参数。

./dminit help

需要注意的是页大小 (page_size)、簇大小 (extent_size)、大小写敏感 (case_sensitive)、字符集 (charset) 这四个参数,一旦确定无法修改,需谨慎设置。

  1. extent_size 指数据文件使用的簇大小,即每次分配新的段空间时连续的页数。只能是 16 页或 32 页或 64 页之一,缺省使用 16 页。
  2. page_size 数据文件使用的页大小,可以为 4 KB、8 KB、16 KB 或 32 KB 之一,选择的页大小越大,则 DM 支持的元组长度也越大,但同时空间利用率可能下降,缺省使用 8 KB。
  3. case_sensitive 标识符大小写敏感,默认值为 Y 。当大小写敏感时,小写的标识符应用双引号括起,否则被转换为大写;当大小写不敏感时,系统不自动转换标识符的大小写,在标识符比较时也不区分大小写,只能是 Y、y、N、n、1、0 之一。
  4. charset 字符集选项。0 代表 GB18030;1 代表 UTF-8;2 代表韩文字符集 EUC-KR;取值 0、1 或 2 之一。默认值为 0。

可以使用默认参数初始化实例,需要附加实例存放路径。此处以初始化实例到 /dm/data 目录下为例(执行初始化命令前,需要使用 root 用户授予 /dm/data 目录相应权限,可以参考修改目录权限),初始化命令如下:

./dminit path=/dm/data

也可以自定义初始化实例的参数,参考如下示例:

以下命令设置页大小为 32 KB,簇大小为 32 KB,大小写敏感,字符集为 utf_8,数据库名为 DMDB,实例名为 DBSERVER,端口为 5237。

./dminit path=/dm/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DMDB INSTANCE_NAME=DBSERVER PORT_NUM=5237

这里重点提一下这个大小写敏感

大小写敏感是用于数据库初始化后,数据库的表,字段是否”大小写敏感 ”

这关乎到sql语句运行时的语句样式

例如:

如果设置了大小写敏感,数据库是允许TEST表和test表共同存在的

然后你在进行DDL语句时,比如我现在要查询TEST库

select * from test

这是不行的,必须是

select * from “TEST”

设置了”大小写敏感 ”后,要求sql语句在设计到表或者字段时,要加上双引号

Insert语句和update语句也不例外

达梦数据库设置成大小写敏感时,小写的标识符需要用双引号括起,否则会被转换为大写;当大小写不敏感时,系统不自动转换标识符的大小写,在标识符比较时也不区分大小写。

所以,这里我们选择大小写不敏感

注意:如果后期要更改,只能将实例删除后重新创建新的实例才可以,意味着:一旦确定好实例参数,那么这个库你就没办法更改这些重要的基础配置了

1.5注册服务

注册服务需使用 root 用户进行注册。使用 root 用户进入数据库安装目录的 /script/root 下,如下所示:

cd /home/dmdba/script/root

注册服务,如下所示:

./dm_service_installer.sh -t dmserver -dm_ini /dm/data/DAMENG/dm.ini -p DMSERVER

1.6启动、停止数据库

服务注册成功后,启动数据库,如下所示:

systemctl start DmServiceDMSERVER.service

停止数据库,如下所示:

systemctl stop DmServiceDMSERVER.service

重启数据库,如下所示:

systemctl restart DmServiceDMSERVER.service

查看数据库服务状态,如下所示:

systemctl status DmServiceDMSERVER.service

可前台启动,进入 DM 安装目录下的 bin 目录下,命令如下:

./dmserver /dm/data/DAMENG/dm.ini

该启动方式为前台启动,若想关闭数据库,则输入 exit 即可。

也可进入 DM 安装目录下的 bin 目录下,启动/停止/重启数据库,如下所示:

./DmServiceDMSERVER start/stop/restart

查看数据库状态,如下所示:

./DmServiceDMSERVER status


1.7开启远程连接

达梦默认端口是5236

如果服务器是开启防火墙状态的请注意 将数据库的端口开放否则链接会报错

命令:firewall-cmd --add-service=dmdba --permanent
# 5236为dmdba端口
命令:firewall-cmd --zone=public --add-port=5236/tcp --permanent
命令:firewall-cmd --reload
# 查看防火墙开放端口
firewall-cmd --zone=public --list-ports


1.8数据库安装目录

下图展示为 DM8 数据库目录。

cd /home/dmdba/dm8

/dm8/bin 目录存放 DM 数据库的可执行文件,例如 disql 命令、dminit 命令、dmrman 工具等。

/dm8/desktop 存放 DM 数据库各个工具的桌面图标。

/dm8/doc 存放 DM 数据库用户手册。

/dm8/drivers 存放连接 DM 数据库的驱动文件。

/dm8/log 存放 DM 数据库日志,包括工具的日志、数据库日志、服务日志等。

/dm8/samples 存放 DM 数据库各类配置文件的示例文件。

/dm8/script 存放注册、注销 DM 数据库服务的工具,例如 dm_service_installer.sh 等。

/dm8/tool 存放 DM 数据库的各个工具,例如 manager 管理工具、dbca 数据库配置助手等。

/dm8/uninstall 目录存放卸载 DM 数据库的脚本。

/dm8/web 目录存放 DM 数据库 dem 工具的 web 环境。

数据库实例目录

/dm8/data 为数据库实例目录,该目录存放各个实例的文件。

以实例 DAMENG 为例,该目录下存放 DAMENG 实例的配置文件 *.ini、控制文件 dm.ctl、数据文件 *.DBF、日志文件 *.log 等。

1.9windows上安装管理工具

为了方便管理数据库,我们可以在windows上安装一个达梦数据库,可以选择只安装管理工具,但是建议还是全部安装

进入官网,选择对应版本下载

根据安装提示,一步一步安装即可

安装好后,进入安装目录,找到tool目录

找到manager.exe 双击打开

数据库实例连接
  • 新建连接

创建连接数据库的对象导航,不进行保存,下次开启后需重新连接。

  • 注册连接

创建连接数据库的对象导航,进行保存,下次开启后对象导航存在,可直接进行连接。

注册连接

输入主机名(IP 地址)、端口(默认 5236)、用户名(默认 SYSDBA)、密码(默认 SYSDBA),点击【测试】,测试是否连通,点击【确定】,连接数据库,如下图所示:

对象导航栏自动生成对应的数据库链接信息,点击鼠标【右键】,点击【连接】即可,如下图所示:

新建连接

点击【新建连接】,输入主机名(IP 地址)、端口(默认 5236)、用户名(默认 SYSDBA)、密码(默认 SYSDBA),点击【确认】即可直接进行数据库连接,如下图所示:

信息说明和常用配置
        窗口基本功能说明

连接数据库后,左侧显示对象导航;右侧为新建查询窗口,通过窗口可编写 SQL 语句进行执行;顶部为工具栏;底部为消息和结果集。如下图所示:

查看数据库实例信息

通过 DM 管理工具可查看数据库实例的信息,包含系统概览,表使用空间,系统管理,日志文件,归档配置等几个方面。

选择对应实例,右键点击【管理服务器】,即可进行查看实例相关信息,如下图所示:

更加详细文档可参考官方文档

官方手册:https://eco.dameng.com/document/dm/zh-cn/start/install-dm-linux-prepare.html

2.达梦数据库集合SpringBoot丶Mybatis丶Mybatis-plus

2.1.driver驱动包

在安装目录下的drivers下的jdbc找到驱动包

这里我们选择18这个最新版本,只要这一个驱动就够了

2.2.pom环境

新建项目,选择SpringBoot - 2.7.9  ;  Mybatis-3.0.0

IDEA中,打开右侧maven管理页面,选择执行maven命令,打开命令界面

编辑命令,导入上面的达梦驱动包

命令模板

mvn install:install-file -Dfile=/project/mysdk.jar -DgroupId=com.aspose -DartifactId=aspose-cells -Dversion=8.5.2 -Dpackaging=jar

  1. -Dfile : 表示jar包所在位置(绝对路径)
  2. -DgroupId : 表示项目ID
  3. -DartfactId : 表示组织ID
  4. -Dversion : 表示版本
  5. -Dpackaging : 表示以什么形式

这里命令为:

mvn install:install-file -Dfile=D:\tools\dmdb\drivers\jdbc\DmJdbcDriver18.jar -DgroupId=com.dm -DartifactId=DmJdbcDriver -Dversion=1.8 -Dpackaging=jar

<!--达梦-->
<dependency>
    <groupId>com.dm</groupId>
    <artifactId>DmJdbcDriver</artifactId>
    <version>1.8</version>
</dependency>

2.3.resources配置文件

driver

之前:com.mysql.cj.jdbc.Driver

现在:dm.jdbc.driver.DmDriver

url

之前:jdbc:mysql://127.0.0.1:3306/test?

现在:jdbc:dm://127.0.0.1:5236/TEST?

username

之前:root

现在:SYSDBA

password

之前:123456

现在:SYSDBA

Properties

#DM
spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver
spring.datasource.url =jdbc:dm://192.168.163.236:5236
spring.datasource.username=SYSDBA
spring.datasource.password=SYSDBA

mybatis.mapper-locations=classpath*:mapper/**/*Mapper.xml

yml

spring:

  datasource:

    url: jdbc:dm://192.168.163.236:5236

    username: JP

    password: 123456789

    driver-class-name: dm.jdbc.driver.DmDriver

    type: com.alibaba.druid.pool.DruidDataSource

    initialSize: 1

    minIdle: 3

    maxActive: 20

    maxWait: 60000

    timeBetweenEvictionRunsMillis: 60000

    minEvictableIdleTimeMillis: 30000

    filters: stat,wall

    druid:

      test-while-idle: false

  jpa:

    show-sql: true

    generate-ddl: false

    hibernate:

      ddl-auto:

    properties:

      hibernate:

        enable_lazy_load_no_trans: true

        default_schema: JP

        temp:

          use_jdbc_metadata_defaults: false

    database-platform: org.hibernate.dialect.DmDialect

2.4.测试
1.SpringBoot集成Mybatis
1.实体类

package com.cds.dmdb.domain;

import lombok.Data;

@Data
public class Table {

    private Integer id;

    private String name;

    private String age;

}

2.Mapper

package com.cds.dmdb.mapper;

import com.cds.dmdb.domain.Table;

import java.util.List;

public interface TestMapper {

    public List<Table> selectAll();

    public int insert(Table table);


    public int update(Table table);

    public int delete(int id);

}

3.mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cds.dmdb.mapper.TestMapper">

    <resultMap id="TableResult" type="com.cds.dmdb.domain.Table">
        <result column="id" property="id" jdbcType="INTEGER"/>
    </resultMap>

    <select id="selectAll" resultMap="TableResult">
        select * from "TEST"."TABLE_1";
    </select>

    <insert id="insert" parameterType="com.cds.dmdb.domain.Table" keyProperty="id" useGeneratedKeys="true">
        insert into "TEST"."TABLE_1"
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="name != null and name != ''">name,</if>
            <if test="age != null and age != ''">age,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="name != null and name != ''">#{name},</if>
            <if test="age != null and age != ''">#{age},</if>
        </trim>
    </insert>

    <update id="update" parameterType="com.cds.dmdb.domain.Table">
        update "TEST"."TABLE_1"
        <trim prefix="SET" suffixOverrides=",">
            <if test="name != null and name != ''">"name" = #{name},</if>
            <if test="age != null and age != ''">"age" = #{age},</if>
        </trim>
        where "id" = #{id}
    </update>

    <delete id="delete" parameterType="int">
        delete from "TEST"."TABLE_1" where "id" = #{id}
    </delete>
</mapper>

4.测试类

package com.cds.dmdb;

import com.cds.dmdb.domain.Table;
import com.cds.dmdb.mapper.TestMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class DmdbApplicationTests {

    @Autowired
    private TestMapper testMapper;

    @Test
    void selectAll() {
        System.out.println(testMapper.selectAll());
    }

    @Test
    void insert() {
        Table table = new Table();
        table.setName("张三");
        table.setAge("25");
        testMapper.insert(table);
        System.out.println(testMapper.selectAll());
    }


    @Test
    void update() {
        Table table = new Table();
        table.setId(1);
        table.setName("麻子");
        table.setAge("15");
        testMapper.update(table);
        System.out.println(testMapper.selectAll());
    }


    @Test
    void delete() {
        testMapper.delete(4);
        System.out.println(testMapper.selectAll());
    }

}

查询成功

2.SpringBoot集成Mybatis-Plus
1.增加依赖

<!--Mybatis-Plus-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.2</version>
</dependency>

2.实体类增加识别注解

实体类增加注解

在自增长ID上添加注解让plus识别到

@TableId(type = IdType.AUTO)

注意:针对达梦数据库,需要在前面加上模式-->模式.表名

@TableName("test.table_1")

不然会报错无效

org.springframework.dao.DataIntegrityViolationException:

### Error querying database.  Cause: dm.jdbc.driver.DMException: 第1 行附近出现错误:

无效的表或视图名[table_1]

3.Mapper继承BaseMapper

新增Mapper.并继承BaseMapper<T>

还要增加@Mapper注解

4.Service继承IService<T>

新增Service接口.并继承IService<T>

5.ServiceImpl继承ServiceImpl<M extends BaseMapper, T>

M为接口UserMapper, T为实体类User,需要加上@Service注解

6.resources配置文件

配置文件不用更改,如有特殊想配置的可查询官网

7.测试

查询

新增

修改

删除

3.达梦数据库的迁移

3.1.打开迁移工具

在安装目录下,找到tool目录,找到dts.exe双击打开

这是达梦的迁移工具

也可以随意打开一个工具,然后点击界面上的”首页”

所有工具都能在这看到,当然你必须当初有安装,如果你只安装了管理工具,那么其他的工具你就使用不了,所以才建议最初安装最好所有都安装

3.2.新建工程

点击新建工程

随意输入

工程建好后,在左边栏显示

右键”迁移”,”新建迁移”

3.3.填写数据源以及目的源

填写数据源来源

这里例子为MySQL, 其他数据库也是一样

这里我们选择”指定驱动”

然后驱动路径一定要填写,在maven仓库中找到MySQL的驱动路径

例: D:\java\maven\maven_repository\mysql\mysql-connector-java\8.0.13\mysql-connector-java-8.0.13.jar

URL如下参考,替换库名就可以了

jdbc:mysql://localhost:3306/<database_name>?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true

接着点击下一步,继续填写目的源

在 mysql 数据库中,对象名默认是小写,达梦对象名默认是大写,在用达梦 DTS 工具迁移的时候,去掉“保持对象名大小写”的勾选,使对象名自动转换成大写,在 mybatis 查询的时候,即不需要加双引号强调小写。

点击”查看默认类型映射关系”可以将两个不同数据库之间的类型的对应关系

3.4.指定模式

指定模式

双击显示下拉框,选择目的模式

指定表

将需要迁移的表选中即可

双击目的模式,进入编辑页面

3.5.迁移

确定好迁移模式之后,点击下一步

在该页面可选择”以文本方式显示执行任务”或”以表格方式显示执行任务”

点击”完成”进行迁移

迁移过程中如若出现错误会显示

3.6.迁移中出现的错误以及解决方案

默认情况下,迁移”表定义”,”主键”,”约束”,”索引”,”表及字段注释”,”数据”

如果说数据量不大,就直接可以全部选中,然后确定后直接迁移

如果数据量比较庞大,建议先进行迁移表结构,以防迁移过程中因数据类型的不同造成迁移失败,等迁移之后确认无误之后再迁移数据

迁移中,如果发生字节长度不够引起报错

列[NAMES]长度超出定义

经排查,该表的 NAMES 字段存放的是中文,UTF8 编码。
报错原因:MySQL 中 varchar(1) 可以存一个汉字,DM 数据库是以字节为单位。若是 gb18030 字符集,varchar(2) 才可以存一个汉字;若是 UTF-8 字符集,varchar(3) 才可以存一个汉字。该 NAMES 在 MYSQL 的长度为 10,在迁移过程中,达梦数据库建表的 NAMES 字段长度也是 10,那么就会导致当该字段中文字符超过 4 个的时候,就会出现无法存下的问题。
解决方法:在此种情况下,为了保证汉字可以完整的被存储,可通过如下两种方法解决:
方法一:扩大字段长度。如 MySQL 表中的 NAMES 字段长度为 10,那么建议在达梦建表的时候该 NAMES 字段长度为 30。
方法二:重新初始化达梦数据库实例,并设置参数 length_in_char=1,即 VARCHAR 类型对象的长度以字符为单位。

因为MySQL中是以字符为单位,而DM类似oracle 是以字节为单位,所以会出现长度不够

可以在”列映射选项”中修改精度,将其长度扩大

更多错误解决方案可参考官方文档

https://eco.dameng.com/document/dm/zh-cn/faq/faq-mysql-dm8-migrate.html

4.PostgreSQL数据库在统信系统上的安装

4.1.下载安装包

官网地址:PostgreSQL: File Browser

选择gz安装包

4.2.上传到linux服务器,然后解压缩

tar -zxvf postgresql-13.0.tar.gz

4.3.进入到解压后的postgresql-13.0目录下,执行:./configure --prefix=/usr/local/postgresql

./configure --prefix=/usr/local/postgresql (后面这个路径可以自定义)

报错:configure: error: readline library not found

原因是没有找到readline

解决方法:yum install -y readline-devel
报错:configure: error: zlib library not found
解决方法:yum install zlib-devel

没解决还可以更换yum源,可以在网上搜索下相对应文档

但我当时linux服务器是统信系统,上述两个方法都不行,使用yum命令下载提示说下载元数据失败,更换源也没找到统信系统对应的更换yum源的文档

并且我查看是有readline的

发现有readline,但依然报错说找不到

后面发现解决configure: error: readline library not found错误

还有另一个解决方法:

在执行命令 ./configure 加上 --without-readline 选项,不编译 readline

 但是不建议这样做,readline 的作用是能够在 pg 控制台读取历史命令,就像在 linux shell 中按上下键读取历史命令,不需要再手动输入重复的命令

  ./configure --prefix=/usr/local/postgresql --without-readline

接着执行make和make install进行安装编译

过程有点儿长,显示PostgreSQL installation complate 代表完成 

执行完毕,在/usr/local目录下就会有postgresql这个目录

4.3.1yum命令用不了,报错:下载元数据失败

解决办法: 更换统信系统数据源

更换的源文件

链接:https://pan.baidu.com/s/18czOorWAi8-C22c6Hi8TZw

提取码:txxt

将文件UnionTechOS-a-ufu.repo  上传至服务器中的/etc/yum.repos.d

然后再次执行yum命令

如若还是不行,将文件打开,

所有的gpgcheck 改为0  gpgcheck = 0

skip_if_unavailable = 1

gpgkey 注释掉

4.4.创建data目录和log目录

mkdir /usr/local/postgresql/data

mkdir /usr/local/postgresql/log

4.5.加入系统环境变量:

view /etc/profile

小写o进入编辑

增加以下三行
export PGHOME=/usr/local/postgresql
export PGDATA=/usr/local/postgresql/data
export PATH=P A T H : PATH:PATH:JAVA_HOME/bin:$PGHOME/bin

Esc 退出编辑

:wq 保存或 :wq! 强行保存并退出

最后使配置文件生效:source /etc/profile

4.6.增加用户postgres并赋权

useradd postgres

chown -R postgres:root /usr/local/postgresql

4.7.初始化数据库

su postgres (切换到postgres用户)

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

注意:
不能在 root 用户下初始数据库,否则会报错

4.8.编辑配置文件

vim /usr/local/postgresql/data/postgresql.conf

把60行的listen_addresses = 'localhost'改为listen_addresses = '*',并放开注释
把对应的port=5432放开注释

vim /usr/local/postgresql/data/pg_hba.conf

添加一行:
host all all 0.0.0.0/0 md5

说明:
TYPE:pg的连接方式,local:本地unix套接字,host:tcp/ip连接
DATABASE:指定数据库
USER:指定数据库用户
ADDRESS:ip地址,可以定义某台主机或某个网段,32代表检查整个ip地址,相当于固定的ip,24代表只检查前三位,最后一 位是0~255之间的任何一个
METHOD:认证方式,常用的有ident,md5,password,trust,reject。
md5是常用的密码认证方式。
password是以明文密码传送给数据库,建议不要在生产环境中使用。
trust是只要知道数据库用户名就能登录,建议不要在生产环境中使用。
reject是拒绝认证。

4.9.启动服务

pg_ctl start -l /usr/local/postgresql/log/pg_server.log

进入数据库

psql -U postgres -d postgres

 看到postgres=#  代表成功

当我们在postgresql的命令行敲命令的时候我们会发现命令行会发生变化,在postgres=#和postgres-#之间切换:

postgres-#的意思是:你当前的命令输入还不完整。
postgres=#的意思是:当前没有输入新的命令

使用\password进行设置密码,默认用户名是:postgres,这里我们就不去修改用户名了,只修改密码

使用\l 进行查看

4.10.添加postgresql至服务

命令:cd /usr/local/pgsql/postgresql-13.0/contrib/start-scripts

命令:chmod a+x linux

命令:cp linux /etc/init.d/postgresql

此时就可以使用 /etc/init.d/postgresql stop 来停止postgresql

也可以使用:service postgresql start 来启动postgresql

修改postgresql脚本中prefix和PGDATA的内容

附带命令:pg_ctl start 启动服务

          pg_ctl restart 重启服务

设置开机自启动

chkconfig --add postgresql

查看版本

psql -V

4.11.navicat远程连接

如果服务器是开启防火墙状态的请注意 将数据库的端口开放否则链接会报错

命令:firewall-cmd --add-service=postgresql --permanent
# 5432为postgresql端口
命令:firewall-cmd --zone=public --add-port=5432/tcp --permanent
命令:firewall-cmd --reload
# 查看防火墙开放端口
firewall-cmd --zone=public --list-ports


5.MySQL数据库在统信系统上的安装

5.1.查看是否已经安装 Mysql

rpm -qa | grep mysql

我之前装过一次!

如果你查看出来有东西,可以使用下面命令将其删除

rpm -e 文件名

或者

yum remove 文件名


5.2.下载官方 Mysql 包

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

如果安装有提示:Cannot write to ‘mysql57-community-release-el7-10.noarch.rpm’ (No such file or directory),那就是权限不够

可以输入 su root 来解决,然后重新下载。


5.3.安装MySQL包

yum -y install mysql57-community-release-el7-10.noarch.rpm


5.4.安装MySQL

yum -y install mysql-community-server

如果执行命令过程中提示:Unable to find a match: mysql-community-server

则可以通过命令解决

yum module disable mysql

如果报错:

源 "MySQL 5.7 Community Server" 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。

 失败的软件包是:mysql-community-libs-compat-5.7.37-1.el7.x86_64

 GPG  密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

可以将这两个文件下载并上传到服务器的/etc/yum.repos.d

mysql-community.repo

mysql-community-source.repo

两个文件可以在百度网盘中获取

链接:https://pan.baidu.com/s/18czOorWAi8-C22c6Hi8TZw

提取码:txxt

然后再去执行命令 yum -y install mysql-community-server


5.5.启动 Mysql 服务

systemctl start mysqld.service

如果没有报错,进入第六步,

如果执行报错,多半是没有权限,执行下面语句赋予权限,然后重试

chown mysql:mysql -R /var/lib/mysql


5.6.查看 Mysql 运行状态

service mysqld status

看见这个绿色就表示启动成功了.


5.7.查看初始密码(红色部分为初始密码)

grep ‘password’ /var/log/mysqld.log

如果能正常查看到,则OK;如果查看不到,则表示没有密码。


5.8.进入数据库

mysql -u root -p

输入命令后,点击回车,会让你输入密码,然后输入刚刚的初始密码(输密码的时候不可见),当然支持粘贴,你可以复制初始密码后,然后粘贴。如果没有密码,直接回车即可。

注: 如果显示数据库无法访问

修改MySql配置文件my.cnf,新增skip-grant-tables

find / -name my.cnf

修改文件之前记得先关闭mysql服务

service mysqld stop

通过 vi 指令进入文件

vi /etc/my.cnf

新增skip-grant-tables ,添加skip-grant-tables,这样mysql可以免密登录。

重启服务

service mysqld start

再次连接MySql,重置密码

任意密码就可以进入了

mysql -u root -p

通过 show databases; 查询数据库,注意带 ; 号

show databases;

切换到mysql数据库

重置密码(为 root )

update user set authentication_string=password(‘root’) where user=‘root’;

修改配置文件my.cnf,删除skip-grant-tables,重启,再登录

vi /etc/my.cnf

删除skip-grant-tables

重启服务

service mysqld start

根据指令进入MySQL数据库

mysql -uroot -p

输入新密码登录

5.9.远程连接

登录服务器mysql数据库

执行 use mysql;

执行 update user set host = '%' where user = 'root';

执行 FLUSH PRIVILEGES;

查看防火墙是否已开放3306端口

firewall-cmd --query-port=3306/tcp

 

设置3306端口为永久开放

firewall-cmd --add-port=3306/tcp --permanent

 

查看firewalld状态,发现当前是dead状态,即防火墙未开启

systemctl status firewalld

 

关闭防火墙

systemctl stop firewalld

 

重启防火墙(设置了新的端口记得先关闭,再重启)

systemctl status firewalld


二.配置UOS yum源

源文件

链接:https://pan.baidu.com/s/18czOorWAi8-C22c6Hi8TZw

提取码:txxt

将文件UnionTechOS-a-ufu.repo  上传至服务器中的/etc/yum.repos.d

注意: 文件和版本要对应上,我这里的UOS版本是1050a,

因此对应的文件是UnionTechOS-a-ufu.repo

查询版本命令:

cat /etc/issue

然后再次执行yum命令

如若还是不行,将文件打开,

把所有的gpgcheck 改为0 gpgcheck = 0

把skip_if_unavailable = 1

把gpgkey 注释掉


三.安装PostGis

安装postGis必须先安装PostgreSQL

虚拟机环境:统信1050a,PostgreSQL 13.0

1 Postgis安装的必要条件

PostgreSQL: 必须,安装postgis的基础

GNU C 编译器(gcc):  gcc是一个Linux中最标准的C语言编译器,需要安装gcc来编译PostGIS和其他软件或函数库的源码。

GNU Make(gmake或make):这个也是用于编译源码。对于许多系统,GNU make是make的默认版本。通过调用来检查版本make -v

Proj4:Proj4 重投影库用于在PostGIS中提供坐标重投影支持。

GEOS:GEOS几何图形库,用于支持PostGIS中的几何信息处理、分析等功能,也可以直接认为GEOS是一个几何算法库。

LibXML2:当前用于某些导入功能(ST_GeomFromGML和ST_GeomFromKML)。

JSON-C: 当前用于通过功能ST_GeomFromGeoJson导入GeoJSON。

GDAL:用于PostGIS对栅格数据的支持。

2 Postgis安装的可选条件

GDAL:仅在不需要栅格时才可以将其忽略

GTK :编译shp2pgsql-gui形状文件加载器

SFCGAL:用于为PostGIS提供附加的2D和3D高级分析功能。并且还允许将SFCGAL而不是GEOS用于两个后端提供的某些2D函数(例如,例如ST_Intersection或ST_Area),SFCGAL需要CGAL和Boost两个库的支持。

CUnit:回归测试所必需的

DocBook:构建文档必须的

3 必要库和软件的下载路径

项目

下载链接

Postgis

Index of /postgis/source/

Proj4

Index of /proj/

GEOS

Index of /geos/

LibXML2

ftp://xmlsoft.org/libxml2/

Index of /sources

JSON-C

Releases · json-c/json-c · GitHub

GDAL

Index of /gdal/

SFCGAL(可选)

Releases · Oslandia/SFCGAL · GitHub

protobuf-c(可选)

Releases · protobuf-c/protobuf-c · GitHub

4本次安装的软件和库

PostGIS/PostgreSQL和其他依赖关系矩阵

:UsersWikiPostgreSQLPostGIS – PostGIS

本次准备软件与依赖包:

  • gdal-3.1.2.tar.gz
  • geos-3.8.1.tar.bz2
  • json-c-json-c-0.13.1-20180305.tar.gz
  • libxml2-2.9.9.tar.gz

            python-rpm-macros-3-32.el7.noarch.rpm

            python2-rpm-macros-3-32.el7.noarch.rpm

            python-devel-2.7.5-88.el7.x86_64.rpm

  • proj-6.2.1.tar.gz

            sqlite-devel-3.7.17-8.el7_7.1.x86_64.rpm

            sqlite-3.7.17-8.el7_7.1.x86_64.rpm

  • postgis-3.0.2.tar.gz
  • SFCGAL-1.3.8.tar.gz(可选)

            cmake-3.18.3-Linux-x86_64.tar.gz

            boost-devel-1.53.0-28.el7.x86_64.rpm

                 boost-jam-1.53.0-28.el7.x86_64.rpm

                 boost-build-1.53.0-28.el7.noarch.rpm

                 boost-atomic-1.53.0-28.el7.x86_64.rpm

                 boost-chrono-1.53.0-28.el7.x86_64.rpm

                 boost-context-1.53.0-28.el7.x86_64.rpm

                 boost-filesystem-1.53.0-28.el7.x86_64.rpm

                 boost-regex-1.53.0-28.el7.x86_64.rpm

                 boost-graph-1.53.0-28.el7.x86_64.rpm

                 boost-locale-1.53.0-28.el7.x86_64.rpm

                 boost-math-1.53.0-28.el7.x86_64.rpm

                 boost-program-options-1.53.0-28.el7.x86_64.rpm

                 boost-python-1.53.0-28.el7.x86_64.rpm

                 boost-serialization-1.53.0-28.el7.x86_64.rpm

                 boost-signals-1.53.0-28.el7.x86_64.rpm

                 boost-test-1.53.0-28.el7.x86_64.rpm

                 boost-timer-1.53.0-28.el7.x86_64.rpm

                 boost-wave-1.53.0-28.el7.x86_64.rpm

                 boost-1.53.0-28.el7.x86_64.rpm

    gmp-devel-6.0.0-15.el7.x86_64.rpm

    mpfr-devel-3.1.1-4.el7.x86_64.rpm

    cgal-4.14.3.tar.gz

拷贝至服务器,使用root开始安装。

所有软件和依赖包可以在第三步提供的链接和 阿里镜像站 去下载,另外也将自己所用到的所有软件和依赖包分享至

链接:https://pan.baidu.com/s/1-B8Xu694W-5sQ7iukdc_ww

提取码:pgis

5 安装postgis所依赖的软件和库

安装顺序尽量按照安装条件准备中的官网介绍来,可能会有存在依赖关系,如gdal安装时就要指定proj4的安装路径。

5.1 Prj4

解压proj-6.2.1.tar.gz

[root@skycloud postgis]# tar -zxvf proj-6.2.1.tar.gz   

进入到proj-6.2.1,运行configure,并设置安装的位置为/usr/local/proj-6.2.1

[root@skycloud postgis]# cd proj-6.2.1/  

[root@skycloud proj-6.2.1]# ./configure --prefix=/usr/local/proj-6.2.1  

提示缺少sqlite3且版本>3.7,手动下载sqlite-devel-3.7.17-8.el7_7.1.x86_64.rpm、sqlite-3.7.17-8.el7_7.1.x86_64.rpm

[root@skycloud postgis]# rpm -ivh sqlite-devel-3.7.17-8.el7_7.1.x86_64.rpm  

[root@skycloud postgis]# rpm -ivh sqlite-3.7.17-8.el7_7.1.x86_64.rpm

重新运行检测通过

[root@skycloud proj-6.2.1]# ./configure --prefix=/usr/local/proj-6.2.1  

安装proj报错

报错: configure: error: *** A compiler with support for C++11 language features is required.

原因: gcc版本太低了

解决问题:

(1)查看当前的gcc版本:

 gcc -v

  结果:gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)

(2)下载高版本的gcc:

wget ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-8.3.0/gcc-8.3.0.tar.gz

(3)解压:

tar -zxvf gcc-8.3.0.tar.gz

(4)进入目录

cd gcc-8.3.0

(5)配置

./configure --prefix=/usr/local/gcc-8.3.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib

注意,如果出现错误以下错误:

...省略

configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.

Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify

their locations. Source code for these libraries can be found at

their respective hosting sites as well as atftp://gcc.gnu.org/pub/gcc/infrastructure/. See also

http://gcc.gnu.org/install/prerequisites.html for additional info. If

you obtained GMP, MPFR and/or MPC from a vendor distribution package,make sure that you have installed both the libraries and the header

files. They may be located in separate packages.

错误说明,安装gcc需要这三个依赖:GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+。

错误中还指出了下载页面的地址:ftp://gcc.gnu.org/pub/gcc/infrastructure/。

        1、 打开链接:ftp://gcc.gnu.org/pub/gcc/infrastructure/。

        2、 找到需要的三个包地址,下载下来:

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz

        3、安装GMP:      

tar -jxvf gmp-6.1.0.tar.bz2

cd gmp-6.1.0

./configuremake && make install

        安装MPFR:

tar -jxvf mpfr-3.1.4.tar.bz2

cd mpfr-3.1.4

./configuremake && make install

        安装MPC:

tar -zxvf mpc-1.0.3.tar.gz

cd mpc-1.0.3

./configuremake && make install

继续安装:

./configure --prefix=/usr/local/gcc-8.3.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib

有可能报错:

configure: error: in `/root/gcc-6.4.0/host-x86_64-pc-linux-gnu/gcc':

configure: error: C++ preprocessor "/lib/cpp" fails sanity check

解决办法:

yum install glibc-headers gcc-c++ -y

(6)编译

make

(7)安装

make install

(8)查看版本

gcc -v

如果发现版本没有变化,

可以删除旧版本的gcc,如果旧版的是用yum安装的,可以使用yum remove gcc。

然后把新安装的gcc的bin目录添加到环境变量中,/etc/profile文件中。

再查看版本,是否已变成最新安装的版本。

​​

(9)更新标准库

  (这一步,应该是需要的,gcc升级后,标准库还是旧的,可能影响一些编译操作。)

1、进入到刚才安装新的GCC的目录中:cd /usr/local/gcc-8.3.0

2、进入到库目录:cd lib64 (注意:系统如果是64位的就进入到lib64目录,否则进入到lib目录)

3、查看当前库的最搭版本:ls,结果看到:libstdc++.so.6.0.25

4、复制到系统默认的库目录下:

cp libstdc++.so.6.0.25 /usr/lib64/  

(注意:系统如果是32:cp libstdc++.so.6.0.25 /usr/lib/)


5、进入到/usr/lib64下,查看相关的版本信息:
ls -l | grep libstdc++

        结果:
...   libstdc++.so.6 -> libstdc++.so.6.0.13
...  libstdc++.so.6.0.13
                      ...   libstdc++.so.6.0.25


6、删除旧的软连接:
rm -f libstdc++.so.6


7、建立新的软连接:
ln -s libstdc++.so.6.0.25 libstdc++.so.6

8、查看标准库最新的版本:

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

再次重新运行检测

[root@skycloud proj-6.2.1]# ./configure --prefix=/usr/local/proj-6.2.1  

编译与安装

[root@skycloud proj-6.2.1]# make clean;make  

[root@skycloud proj-6.2.1]# make check  --可选,编译结果测试

[root@skycloud proj-6.2.1]# make install

在/usr/local查看文件列表

[root@skycloud proj-6.2.1]# ll /usr/local/

5.2 GEOS

解压geos-3.8.1.tar.bz2

[root@skycloud postgis]# tar -jxvf geos-3.8.1.tar.bz2  

进入到geos-3.8.1,运行configure,并设置安装的位置为/usr/local/geos-3.8.1,此处无error

[root@skycloud postgis]# cd geos-3.8.1/  

[root@skycloud geos-3.8.1]# ./configure --prefix=/usr/local/geos-3.8.1 

编译与安装

[root@skycloud geos-3.8.1]# make clean;make  

[root@skycloud geos-3.8.1]# make install  

在/usr/local查看文件列表

[root@skycloud geos-3.8.1]# ll /usr/local


5.3 LibXML2

解压libxml2-2.9.9.tar.gz

[root@skycloud postgis]# tar -zxvf libxml2-2.9.9.tar.gz   

进入到libxml2-2.9.9,运行configure,并设置安装的位置为/usr/local/ libxml2-2.9.9

[root@skycloud postgis]# cd libxml2-2.9.9/  

[root@skycloud libxml2-2.9.9]# ./configure --prefix=/usr/local/libxml2-2.9.9  

编译

[root@skycloud libxml2-2.9.9]# make clean;make  

编译出现问题,需要安装python-devel,下载 python-rpm-macros-3-32.el7.noarch.rpmpython2-rpm-macros-3-32.el7.noarch.rpm、python-devel-2.7.5-88.el7.x86_64.rpm ,上传并安装。

[root@skycloud postgis]# rpm -ivh python-rpm-macros-3-32.el7.noarch.rpm   

[root@skycloud postgis]# rpm -ivh python2-rpm-macros-3-32.el7.noarch.rpm   

[root@skycloud postgis]# rpm -ivh python-devel-2.7.5-88.el7.x86_64.rpm

重新编译安装

[root@skycloud libxml2-2.9.9]# make clean;make  

[root@skycloud libxml2-2.9.9]# make install  

[root@skycloud libxml2-2.9.9]# ll /usr/local

在/usr/local查看文件列表


5.4 json-c

解压json-c-json-c-0.13.1-20180305.tar.gz

[root@skycloud postgis]# tar -zxvf json-c-json-c-0.13.1-20180305.tar.gz

进入到json-c-json-c-0.13.1-20180305,运行configure,并设置安装的位置为/usr/local/json-c-0.13

[root@skycloud postgis]# cd json-c-json-c-0.13.1-20180305/  

[root@skycloud json-c-json-c-0.13.1-20180305]# ./configure --prefix=/usr/local/json-c-0.13 

编译与安装

[root@skycloud json-c-json-c-0.13.1-20180305]# make clean;make  

[root@skycloud json-c-json-c-0.13.1-20180305]# make install  

[rot@skycloud json-c-json-c-0.13.1-20180305]# make install  

在/usr/local查看文件列表

[root@skycloud json-c-json-c-0.13.1-20180305]# ll /usr/local


5.5 gdal

解压gdal-3.1.2.tar.gz

[root@skycloud postgis]# tar -zxvf gdal-3.1.2.tar.gz  

进入到gdal-3.1.2,运行configure,并设置安装的位置为/usr/local/gdal-3.1.2

[root@skycloud postgis]# cd gdal-3.1.2/    

# 需指定proj的安装路径,否则  

# ./configure会报错:error: PROJ 6 symbols not found  

[root@skycloud gdal-3.1.2]# ./configure --prefix=/usr/local/gdal-3.1.2 --with-proj=/usr/local/proj-6.2.1                                                           

编译与安装 

[root@skycloud gdal-3.1.2]# make clean;make  

[root@skycloud gdal-3.1.2]# make install  

在/usr/local查看文件列表

[root@skycloud gdal-3.1.2]# ll /usr/local


5.6 SFCGAL(可选)

这部分内容参考博客:

Linux之postgis离线安装_linux postgrsql 离线安装postgis-CSDN博客

这里我们并没有安装SFCGAL


6 安装postgis

1.动态库路径添加

添加动态库路径/etc/ld.so.conf,此文件记录了编译时使用的动态函数库的路径,即加载so库的路径。

默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,而通常通过源码包进行安装时,如果不指定—prefix,会将库安装在/usr/local目录下,而又没有在文件/etc/ld.so.conf中添加/usr/local/lib这个目录。这样虽然安装了源码包,但是使用时仍然找不到相关的.so库,就会报错。也就是说系统不知道安装了源码包。

对于此种情况有两种解决办法:

(1)在用源码安装时,用--prefix指定安装路径为/usr/lib。这样的话也就不用配置PKG_CONFIG_PATH

(2)直接将路径/usr/local/lib路径加入到文件/etc/ld.so.conf文件的中。在文件/etc/ld.so.conf中末尾直接添加:/usr/local/lib

现在就使用第二种方法来为刚才安装的动态库添加路径,编辑/etc/ld.so.conf配置文件,为其添加如下内容:

[root@skycloud skycity]# vim /etc/ld.so.conf  

/usr/local/pgsql/lib  

/usr/local/geos-3.8.1/lib  

/usr/local/proj-6.2.1/lib  

/usr/local/json-c-0.13/lib  

/usr/local/libxml2-2.9.9/lib  

/usr/local/gdal-3.1.2/lib

使用ldconfig命令将指定的动态函数库加载到内存中

[root@skycloud skycity]# ldconfig  


2 编译安装postgis

解压postgis-3.0.2.tar.gz

[root@skycloud postgis]# tar -zxvf postgis-3.0.2.tar.gz  

进入到postgis-3.0.2,运行configure,需要指定相关参数,说明如下:

--prefix=PREFIX

PostGIS的安装位置。

注:该参数当前已被破坏,因为该软件包将仅安装到PostgreSQL安装目录中

--with-pgconfig=FILE


PostgreSQL提供了一个名为pg_config的实用程序, 以使诸如PostGIS之类的扩展程序能够找到PostgreSQL安装目录

--with-gdalconfig=FILE

GDAL提供了一个gdal-config文件,使PostGIS能定位到GDAL安装的目录

--with-geosconfig=FILE


GEOS是必需的几何图形库,提供了一个名为geos-config的实用程序,以使软件安装能够找到GEOS安装目录

--with-xml2config=FILE

LibXML是执行GeomFromKML / GML流程所需的库。将PostGIS指向特定的 xml2-configconfi文件,以使软件安装可以找到LibXML安装目录

--with-projdir=DIR

指定Proj4安装目录

--with-libiconv=DIR

安装iconv的目录

--with-jsondir=DIR

JSON-C是PostGIS ST_GeomFromJSON支持所需的MIT许可的JSON库,指定PostGIS将针对其构建的特定JSON-C安装目录

--with-pcredir=DIR

PCRE是address_standardizer扩展所需的BSD许可的Perl兼容正则表达式库,指定PostGIS将针对其建立的特定PCRE安装目录

--with-gui

编译数据导入GUI(需要GTK + 2.0)。为shp2pgsql创建shp2pgsql-gui图形界面

--without-raster

无需栅格支持即可编译

--without-topology

禁用拓扑支持

--with-gettext=no


默认情况下,PostGIS会尝试检测gettext支持并对其进行编译,但是,如果遇到导致加载程序损坏的不兼容问题,则可以使用此命令完全禁用它

--with-sfcgal=PATH

默认情况下,没有此开关,PostGIS将不会安装sfcgal支持。 PATH是一个可选参数,它允许为sfcgal-config指定备用PATH。

--without-wagyu

可以禁用该库,将改用GEOS

指定参数,运行configure

[root@skycloud postgis]# cd postgis-3.0.2/  

[root@skycloud postgis-3.0.2]# ./configure --prefix=/usr/local/postgis-3.0.2 --with-gdalconfig=/usr/local/gdal-3.1.2/bin/gdal-config --with-pgconfig=/usr/local/pgsql/bin/pg_config --with-geosconfig=/usr/local/geos-3.8.1/bin/geos-config --with-projdir=/usr/local/proj-6.2.1 --with-xml2config=/usr/local/libxml2-2.9.9/bin/xml2-config --with-jsondir=/usr/local/json-c-0.13 --with-sfcgal=/usr/local/SFCGAL-1.3.8/bin/sfcgal-config

有警告,但没有错

编译与安装

[root@skycloud postgis-3.0.2]# make clean;make  

[root@skycloud postgis-3.0.2]# make install  

在/usr/local查看文件列表,并没有找到postgis相关的安装路径,只是存在 /usr/local/pgsql/share/contrib/postgis-3

安装完成!


进入数据库

su - postgres

Psql

输入: create extension postgis;

装postgis扩展

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/519695.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

#include<初见c语言之字符函数和字符串函数>

目录 一、字符分类函数 二、字符转换函数 三、strlen的使⽤和模拟实现 1.strlen使用 2.strlen函数的模拟实现 四、 strcpy的使⽤和模拟实现 1.strcpy使用 2.strcpy函数的模拟实现 五、strcat的使用和模拟实现 1.strcat的使用 2.strcat的模拟实现 六、strcmp的使用…

【HTML】CSS样式(二)

上一篇我们学习了CSS基本样式和选择器&#xff0c;相信大家对于样式的使用有了初步认知。 本篇我们继续来学习CSS中的扩展选择器及CSS继承性&#xff0c;如何使用这些扩展选择器更好的帮助我们美化页面。 下一篇我们将会学习CSS中常用的属性。 喜欢的 【点赞】【关注】【收藏】…

214基于matlab的交互多模算法(IMM)机动目标跟踪算法

基于matlab的交互多模算法&#xff08;IMM&#xff09;机动目标跟踪算法&#xff0c;完整的15页文档论文。根据二维空间内目标作匀速直线运动和匀速圆周运动的特点&#xff0c;在建立目标运动模型和观测模型的基础上采用基于交互多模算法&#xff08;IMM&#xff09;的卡尔曼滤…

MySQL 50 道查询题汇总,足以巩固大部分查询(附带数据准备SQL、题型分析、演示、50道题的完整SQL)

目录 MySQL 50 道查询题&#xff0c;足以巩固大部分查询数据准备&#xff1a;创建表sql添加表数据sql 50道查询题目汇总01 - 05 题&#xff1a;1、查询 “01” 语文成绩比 “02” 数学成绩高的学生的信息及课程分数2、查询 "01语文课程"比"02数学课程"成绩…

ARM架构学习笔记2-汇编

RISC是精简指令集计算机&#xff08;RISC:Reduced Instruction Set Computing&#xff09; ARM汇编概述 一开始&#xff0c;ARM公司发布两类指令集&#xff1a; ① ARM指令集&#xff0c;这是32位的&#xff0c;每条指令占据32位&#xff0c;高效&#xff0c;但是太占空间 2…

0基础学习Mybatis系列数据库操作框架——自定义类型处理器

大纲 Java模型类定义类型处理器配置文件和类型绑定和字段绑定resultMap中绑定 Mapper代码测试类型对应关系表总结参考资料 我们有时候会在数据库中放入一个扩展字段&#xff0c;用于保存在表设计时尚未考虑到的、未来会加入的一些信息。这个字段我们一般使用字符串存储&#xf…

短视频素材高清无水印购买要多少钱?

大家好&#xff01;在制作短视频时&#xff0c;找到短视频素材高清无水印是非常重要的。那么&#xff0c;短视频素材高清无水印在哪里找呢&#xff1f;今天&#xff0c;我要给大家推荐六个主流的视频素材分享网站&#xff0c;帮助你轻松获取高质量的短视频素材高清无水印&#…

C++读取.bin二进制文件

C读取.bin二进制文件 在C中&#xff0c;可以使用文件输入/输出流来进行二进制文件的读写操作&#xff0c;方便数据的保存和读写。 //C读取bin二进制文件 int read_bin() {std::ifstream file("data_100.bin", std::ios::in | std::ios::binary);if (file) {// 按照…

Hive初始化元数据库(默认是derby数据库)时候出现缺少方法的错误com.google.common.base.Preconditions

错误的出现&#xff1a; 下载好hive后&#xff0c;初始化元数据库&#xff08;使用内置derby数据测试&#xff09;&#xff0c;出现报错 初始化hive元数据&#xff1a;schematool -dbType derby -initSchema 这个原因是与 Hive 和 Hadoop 版本的 Guava 版本不一样导致的。 解决…

SpringBoot+ECharts+Html 字符云/词云案例详解

1. 技术点 SpringBoot、MyBatis、thymeleaf、MySQL、ECharts 等 2. 准备条件 在mysql中创建数据库echartsdb&#xff0c;数据库中创建表t_comment表&#xff0c;表中设置两个字段word与count&#xff0c;添加表中的数据。如&#xff1a;附件中的 echartsdb.sql 3. SpringBoot…

webrtcP2P通话流程

文章目录 webrtcP2P通话流程webrtc多对多 mesh方案webrtc多对多 mcu方案webrtc多对多 sfu方案webrtc案例测试getUserMediagetUserMedia基础示例-打开摄像头getUserMedia canvas - 截图 打开共享屏幕 webrtcP2P通话流程 在这里&#xff0c;stun服务器包括stun服务和turn转发服…

Aurora8b10b(1)IP核介绍并基于IP核进行设计

文章目录 前言一、IP核设置二、基于IP核进行设计2.1、设计框图2.2、aurora_8b10b_0模块2.3、aurora_8b10b_0_CLOCK_MODULE2.4、aurora_8b10b_0_SUPPORT_RESET_LOGIC2.5、aurora8b10b_channel模块2.6、IBUFDS_GTE2模块2.7、aurora_8b10b_0_gt_common_wrapper模块2.8、aurora8b10…

多路转接-epoll/Reactor(2)

epoll 上次说到了poll&#xff0c;它存在效率问题&#xff0c;因此出现了改进的poll----epoll。 目前epoll是公认的效率最高的多路转接的方案。 快速了解epoll接口 epoll_create&#xff1a; 这个参数其实已经被废弃了。 这个值只要大于0就可以了。 这是用来创建一个epoll模…

阿里云服务器资费:一年或1个月费用价格,2024年更新

阿里云服务器资费多少钱&#xff1f;一年或1个月费用价格&#xff1a;2核2G3M轻量服务器61元一年、ECS云服务器2核2G3M 99元一年&#xff0c;2核4G轻量165元一年&#xff0c;2核4G ECS 199元一年&#xff0c;阿里云服务器网aliyunfuwuqi.com整理如下&#xff1a; 1、ECS经济型e…

SpringBoot快速入门笔记(4)

文章目录 一、Vue框架1、前端环境准备2、简介3、快速开始4、事件绑定 二、Vue组件化开发1、NPM2、Vue Cli3、组件化开发4、SayHello自定义组件5、Movie自定义组件 一、Vue框架 1、前端环境准备 编码工具&#xff1a;VSCode 依赖管理&#xff1a;NPM 项目构建&#xff1a;VueCl…

Word·VBA文档合并

目录 1&#xff0c;复制法&#xff0c;不保留原文档格式2&#xff0c;复制法&#xff0c;保留原文档格式3&#xff0c;插入法&#xff0c;保留原文档格式 之前的文章《WordVBA实现邮件合并》虽然可以生成邮件合并文档结果&#xff0c;但是不能像《python实现word邮件合并》一样…

LeetCode-79. 单词搜索【数组 字符串 回溯 矩阵】

LeetCode-79. 单词搜索【数组 字符串 回溯 矩阵】 题目描述&#xff1a;解题思路一&#xff1a;回溯 回溯三部曲。这里比较关键的是给board做标记&#xff0c;防止之后搜索时重复访问。解题思路二&#xff1a;回溯算法 dfs,直接看代码,很容易理解。visited哈希&#xff0c;防止…

Android面试题之Listview篇

秋招在即&#xff0c;计蒙准备在国庆假期结束前整理一套Android初级面试题籍&#xff0c;希望对大家有所帮助 提示&#xff1a;以下是本篇文章正文内容 ListView 1.当 ListView 数据集改变后&#xff0c;如何更新 ListView 使用该 ListView 的 adapter 的 notifyDataSetChange…

记录一下前端定时器清除失效的问题

目录 一、问题引入 二、错误代码&#xff1a; 三、错误原因 四、修正的代码 附 vue提供的线上运行代码网址以便证实可用性 一、问题引入 按理说&#xff0c;打开定时器 xxx setInterval(()>{ },100)&#xff0c;之后只要 clearInterval(xxx) 就可以顺利关闭定时器…

【浅尝C++】继承机制=>虚基表/菱形虚继承/继承的概念、定义/基类与派生类对象赋值转换/派生类的默认成员函数等详解

&#x1f3e0;专栏介绍&#xff1a;浅尝C专栏是用于记录C语法基础、STL及内存剖析等。 &#x1f3af;每日格言&#xff1a;每日努力一点点&#xff0c;技术变化看得见。 文章目录 继承的概念及定义继承的概念继承的定义定义格式继承关系与访问限定符 基类和派生类对象赋值转换继…