达梦数据库linux安装
1、官方地址
武汉达梦数据库股份有限公司
2、下载
3、安装
单机安装部署 | 达梦技术文档
产品手册 | 达梦技术文档
linux安装
创建安装用户
为了减少对操作系统的影响,用户不应该以 root 系统用户来安装和运行 DM。用户可以在安装之前为 DM 创建一个专用的系统用户。可参考以下示例创建系统用户和组(并指定用户 ID 和组 ID),具体细节可向系统管理员咨询。
1.创建安装用户组 dinstall。
groupadd -g 12349 dinstall
2.创建安装用户 dmdba。
useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
- useradd:这是 Linux 系统中用于创建新用户的命令。
- -u 12345:指定新建用户的 UID(用户标识符)为 12345。UID 是系统用于标识用户的唯一数字,每个用户在系统中都有一个唯一的 UID。
- -g dinstall:指定新建用户的主用户组为 dinstall。用户组是一种将用户进行分组管理的方式,用户可以属于一个或多个用户组,这里指定了 dmdba 用户的主用户组为 dinstall。
- -m:自动创建用户的家目录。通常,每个用户都有一个属于自己的家目录,用于存储个人文件和配置等信息。
- -d /home/dmdba:指定用户的家目录为 /home/dmdba。即新用户 dmdba 的家目录将被设置在这个路径下。
- -s /bin/bash:指定用户登录后使用的默认 shell 为 /bin/bash。shell 是用户与操作系统内核之间的交互界面,/bin/bash 是一种常见的 shell 程序。
- dmdba:要创建的用户名。在系统中,用户名是用于标识用户身份的字符串,用户使用这个名称来登录系统等。
3.初始化用户密码。
passwd dmdba
4.之后通过系统提示进行密码设置。
注意:创建安装系统用户完成后,安装手册之后的操作默认使用安装系统用户进行操作。
授权文件夹
chown -R dmdba:dinstall /data/dm
上传文件
将DMInstall.bin上传到服务器,授权
chmod +x DMInstall.bin
安装数据库
执行安装命令
DMInstall.bin -i
选择安装语言
Installer Language:
[1]: 简体中文
[2]: English
Please select the installer's language [2]:1
解压安装程序.........
欢迎使用达梦数据库安装程序
验证 key 文件
可以选择是否输入 Key 文件路径。不输入则进入下一步安装,输入 Key 文件路径,安装程序将显示 Key 文件的详细信息,如果是合法的 Key 文件且在有效期内,可以继续安装。如下所示:
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:Y
请输入Key文件的路径地址 [dm.key]:/opt/setup/dm.key
有效日期: 2024-06-25
服务器颁布类型: 企业版
发布类型: 试用版
用户名称: 达梦公司产品试用
授权用户数: 无限制
并发连接数: 无限制
输入时区
可以选择的时区信息。如下所示:
是否设置时区? (Y/y:是 N/n:否) [Y/y]:Y
设置时区:
[ 1]: GTM-12=日界线西
[ 2]: GTM-11=萨摩亚群岛
[ 3]: GTM-10=夏威夷
[ 4]: GTM-09=阿拉斯加
[ 5]: GTM-08=太平洋时间(美国和加拿大)
[ 6]: GTM-07=亚利桑那
[ 7]: GTM-06=中部时间(美国和加拿大)
[ 8]: GTM-05=东部部时间(美国和加拿大)
[ 9]: GTM-04=大西洋时间(美国和加拿大)
[10]: GTM-03=巴西利亚
[11]: GTM-02=中大西洋
[12]: GTM-01=亚速尔群岛
[13]: GTM=格林威治标准时间
[14]: GTM+01=萨拉热窝
[15]: GTM+02=开罗
[16]: GTM+03=莫斯科
[17]: GTM+04=阿布扎比
[18]: GTM+05=伊斯兰堡
[19]: GTM+06=达卡
[20]: GTM+07=曼谷,河内
[21]: GTM+08=中国标准时间
[22]: GTM+09=汉城
[23]: GTM+10=关岛
[24]: GTM+11=所罗门群岛
[25]: GTM+12=斐济
[26]: GTM+13=努库阿勒法
[27]: GTM+14=基里巴斯
请选择设置时区 [21]:21
选择安装类型
数据库软件安装程序提供四种安装方式:“典型安装”、“服务器安装”、“客户端安装”和“自定义安装”,用户可根据实际情况灵活地选择。如下所示:
典型安装包括:服务器、客户端、驱动、用户手册、数据库服务。
服务器安装包括:服务器、驱动、用户手册、数据库服务。
客户端安装包括:客户端、驱动、用户手册。
自定义安装包括:用户根据需求勾选组件,可以是服务器、客户端、驱动、用户手册、数据库服务中的任意组合。
生产环境可以根据实际需求选择,一般情况下选择"典型安装"即可。
安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:1
所需空间: 2201M
选择安装路径
输入数据库软件的安装路径,不输入则使用默认路径,默认路径为 $HOME/dmdbms
(如果安装用户为 root ,则默认安装路径为 /opt/dmdbms
,但不建议使用 root 系统用户来安装)。如下所示:
请选择安装目录 [/home/dmdba/dmdbms]:/data/dm/data
可用空间: 9G
注意
安装路径里的目录名由英文字母、数字和下划线等组成,不建议使用包含空格和中文字符等的路径。
安装小结
安装程序将打印用户之前输入的部分安装信息。如下所示:
是否确认安装路径(/opt/dmdbms)? (Y/y:是 N/n:否) [Y/y]:Y
安装前小结
安装位置: /opt/dmdbms
所需空间: 2201M
可用空间: 9G
版本信息: 企业版
有效日期: 2024-06-25
安装类型: 典型安装
注册数据库服务
当安装进度完成时将会弹出对话框,提示使用 root 系统用户执行相关命令。用户可根据对话框的说明完成相关操作,之后可关闭此对话框,点击“完成”按钮结束安装。如下所示:
[dmdba@~]# su - root
密码:<输入密码>
[root@~]# /data/dm/data/script/root/root_installer.sh
移动 /opt/dmdbms/bin/dm_svc.conf 到/etc目录
创建DmAPService服务
Created symlink /etc/systemd/system/multi-user.target.wants/DmAPService.service → /usr/lib/systemd/system/DmAPService.service.
创建服务(DmAPService)完成
启动DmAPService服务
初始化数据库示例
初始化过程
初始化实例的示例如下:设置页大小(PAGE_SIZE)为 32,日志大小(LOG_SIZE)为 2048,大小写(CASE_SENSITIVE)为敏感,字符集(CHARSET)为 GB18030。
如需更改其它参数,请参考安装路径 doc 目录下的《dminit 使用手册》。
[dmdba@host-172-18-93-251 data]$ /data/dm/data/bin/dminit PATH=/data/dm/data/data PAGE_SIZE=32 LOG_SIZE=2048 CHARSET=0 CASE_SENSITIVE=Y SYSDBA_PWD="123456" SYSAUDITOR_PWD="123456"
initdb V8
db version: 0x7000d
License will expire on 2025-06-25
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLLlog file path: /data/dm/data/data/DAMENG/DAMENG01.loglog file path: /data/dm/data/data/DAMENG/DAMENG02.logwrite to dir [/data/dm/data/data/DAMENG].
- CHARSET/UNICODE_FLAG:字符集选项。取值:0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-KR。默认为 0。可选参数。
- GB18030 编码向下兼容 GBK 和 GB2312,兼容的含义是不仅字符兼容,而且相同字符的编码也相同。GB18030 收录了所有 Unicode3.1 中的字符,包括中国少数民族字符,GBK 不支持的韩文字符等等,也可以说是世界大多民族的文字符号都被收录在内。
- Unicode Transformation Format-8bit 是用以解决国际上字符的一种多字节编码。它对英文使用 8 位(即一个字节),中文使用 24 为(三个字节)来编码。UTF-8 包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8 编码的文字可以在各国支持 UTF8 字符集的浏览器上显示。
- 建议采用默认值 GB18030,如果需要国际字符可以采用 Unicode。GB18030 数字字母占 1 个字节,普通汉字占 2 个字节,部分繁体及少数民族文字占 4 字节。Unicode 在达梦中采用 UTF-8 编码格式,欧洲的字母字符占 1 到 2 个字节,亚洲的大部分字符占 3 个字节,附加字符为 4 个字节。如果只存储中文和字母数字,一般来说 GB18030 更节省空间一些。生产环境中该参数可依据用户实际需求进行指定。
注意
1、实际环境中,簇大小建议选择 32页,页大小选择 32K,日志大小选择 2048M,字符集和大小写敏感需要根据实际业务需求进行设置。
2、强烈建议用户在初始化时,立即修改数据库系统用户初始密码,并设置一定的密码强度,以保障数据安全性。
创建实例服务
[dmdba@dmdsc03 ~]$ su - root
密码:<输入密码>
[root@~]# /data/dm/data/script/root/dm_service_installer.sh -t dmserver -dm_ini /data/dm/data/data/DAMENG/dm.ini -p DMSERVER
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service → /usr/lib/systemd/system/DmServiceDMSERVER.service.
创建服务(DmServiceDMSERVER)完成
启动实例服务
[dmdba@dmdsc03 ~]$ /data/dm/data/bin/DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ OK ]
配置防火墙
默认就可以远程访问,只需要开通防火墙即可。
# 开放 5236 端口
firewall-cmd --zone=public --add-port=5236/tcp --permanent
# 重新加载防火墙规则
firewall-cmd --reload
4、创建数据库
创建和配置 DM 数据库 | 达梦技术文档
5、DM管理工具
新建模式
新建连接
新建模式
导入/导出
导出
- 可以导出所有模式
- 可以只导出一个模式
导入
导入成功
6、达梦和mysql的区别
- mysql
- 库(
DATABASE
)- 独立的存储单元,用于组织和存储表和其他对象
- 表
- 字段
- 库(
- 达梦
- 模式(
SCHEMA
)- 数据库对象的集合,属于某个用户
- 表
- 字段
- 模式(
方面 | 达梦数据库(DM) | MySQL |
---|---|---|
创建数据库 | CREATE SCHEMA db_name; <br>使用 CREATE SCHEMA 创建数据库。 | CREATE DATABASE db_name; <br>使用 CREATE DATABASE 创建数据库。 |
删除数据库 | DROP SCHEMA db_name; <br>使用 DROP SCHEMA 删除数据库。 | DROP DATABASE db_name; <br>使用 DROP DATABASE 删除数据库。 |
创建表 | sql<br>CREATE TABLE "db_name"."table_name" (<br> "id" INT NOT NULL,<br> "name" VARCHAR(50) NOT NULL,<br> "create_time" DATETIME(0),<br> PRIMARY KEY ("id")<br>) STORAGE(ON "MAIN", CLUSTERBTR);<br>COMMENT ON TABLE "db_name"."table_name" IS '表注释'; <br>支持双引号标识表名和字段名,支持 STORAGE 子句指定表空间和存储方式。 | sql<br>CREATE TABLE `table_name` (<br> `id` INT NOT NULL,<br> `name` VARCHAR(50) NOT NULL,<br> `create_time` DATETIME,<br> PRIMARY KEY (`id`)<br>) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='表注释'; <br>使用反引号标识表名和字段名,支持 ENGINE 和 CHARSET 。 |
修改表 | sql<br>ALTER TABLE "db_name"."table_name" MODIFY "column_name" DATETIME(0) NULL;<br>COMMENT ON COLUMN "db_name"."table_name"."column_name" IS '字段注释'; <br>修改字段后需要单独用 COMMENT ON COLUMN 添加字段注释。 | sql<br>ALTER TABLE table_name MODIFY COLUMN `column_name` DATETIME NULL COMMENT '字段注释'; <br>字段注释可以直接在 MODIFY COLUMN 中指定。 |
删除表 | DROP TABLE "db_name"."table_name"; <br>使用双引号标识表名。 | DROP TABLE table_name; <br>表名无需引号(除非包含特殊字符)。 |
字段定义 | - 字段名可以使用双引号,支持关键字作为字段名。<br>- DATETIME 类型默认精度为 6 位,建议使用 DATETIME(0) 。<br>- 不支持字段类型长度(如 INT(10) ),直接使用 INT 。 | - 字段名可以使用反引号,支持关键字作为字段名。<br>- DATETIME 类型不需要指定精度。<br>- 支持字段类型长度(如 INT(10) ),但实际存储长度不受影响。 |
字段注释 | 使用 COMMENT ON COLUMN 单独添加字段注释。 | 在 CREATE TABLE 或 ALTER TABLE 中直接指定字段注释。 |
其他特性 | - 支持 NLSSORT 函数用于拼音排序。<br>- 不支持在 SELECT 中直接使用比较运算符。 | - 支持在 SELECT 中使用比较运算符。<br>- 支持 CONVERT 函数用于排序。 |
7、spring boot连接
官方文档:DM JDBC 编程指南 | 达梦技术文档
引入依赖
<!--达梦start-->
<dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver11</artifactId><version>${DmJdbcDriver11.version}</version>
</dependency>
<!--达梦end-->
1. DmJdbcDriver6 实现JDBC 4.0标准接口,已在JDK6上验证相关功能
2. DmJdbcDriver7 实现JDBC 4.1标准接口,已在JDK7上验证相关功能
3. DmJdbcDriver8 实现JDBC 4.2标准接口,已在JDK8,JDK11,JDK17上验证相关功能
4. DmJdbcDriver11 部分实现JDBC 4.3标准接口,已在JDK11,JDK17,JDK21上验证相关功能
使用mybatis plus
引入依赖
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>${mybatis-plus.version}</version>
</dependency>
配置类
package com.ybw.config;import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** mybatis plus 配置类** @author ybw* @version V1.0* @className MybatisPlusConfig* @date 2025/6/27**/
@Configuration
@MapperScan("com.ybw.mapper")
public class MybatisPlusConfig {/*** mybatis plus插件配置** @methodName: mybatisPlusInterceptor* @return: com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor* @author: ybw* @date: 2025/6/27**/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.DM));return interceptor;}}
代码生成器
package com.ybw.generator;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.converts.DmTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.DMQuery;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import java.util.Collections;
import java.util.List;/*** 生成代码** @author ybw* @version V1.0* @className DmGenerator* @date 2025/2/21**/
public class DmGenerator {/*** 表名** @author: ybw* @date: 2025/6/20**/private static final List<String> TABLE_LIST = List.of("person");public static void main(String[] args) {//1、数据库配置DataSourceConfig.Builder dataSourceConfig = new DataSourceConfig.Builder("jdbc:dm://localhost:5236/TEST", "SYSDBA", "Uw123123").dbQuery(new DMQuery()).typeConvert(new DmTypeConvert() {@Overridepublic IColumnType processTypeConvert(GlobalConfig config, String fieldType) {if (fieldType.toLowerCase().contains("tinyint")) {//tinyint转Integerreturn DbColumnType.INTEGER;}if (fieldType.toLowerCase().contains("bit")) {return DbColumnType.INTEGER;}return super.processTypeConvert(config, fieldType);}});String projectPath = System.getProperty("user.dir");//生成路径(一般都是生成在此项目的src/main/java下面)FastAutoGenerator.create(dataSourceConfig).globalConfig(builder -> {// 设置作者builder.author("ybw")// 指定输出目录.outputDir(projectPath + "/src/main/java");}).packageConfig(builder -> {// 设置父包名builder.parent("com.ybw")// 设置mapperXml生成路径.pathInfo(Collections.singletonMap(OutputFile.xml, projectPath + "/src/main/resources/mapper"));}).strategyConfig(builder -> {// 设置需要生成的表名,多个英文逗号分隔?所有输入 allbuilder.addInclude(TABLE_LIST).serviceBuilder().formatServiceFileName("%sService")//enableColumnConstant:开启生成字段常量.entityBuilder().idType(IdType.AUTO).enableLombok().enableFileOverride().mapperBuilder().enableBaseResultMap().enableBaseColumnList().enableFileOverride();})// 使用Freemarker引擎模板,默认的是Velocity引擎模板.templateEngine(new FreemarkerTemplateEngine()).execute();}}