Linux 达梦数据库(DM8)完整安装配置使用手册

Linux 达梦数据库(DM8)完整安装配置使用手册
Linux 达梦数据库DM8完整安装配置使用手册本文贴合你的Linux 嵌入式、Qt/GIS 开发、服务器运维场景以达梦数据库最新稳定版 DM8为核心覆盖「前期准备→安装→初始化→配置→启停→开机自启→客户端连接→Qt 开发对接→常见坑点」全流程所有命令可直接复制执行新手可零门槛落地同时适配嵌入式无图形环境、GIS 空间数据开发等专属场景。核心适配说明支持 x86_64/arm/aarch64 架构适配 PC 服务器、嵌入式 Linux 设备兼容 CentOS/RHEL、Ubuntu/Debian、统信 UOS、麒麟等主流 Linux 发行版重点覆盖 GIS 开发专属配置、Qt 开发对接、嵌入式开机自启等你的核心需求所有操作均符合达梦数据库官方规范无安全风险一、达梦数据库概述与版本说明1.1 核心定位达梦数据库DM是国产自研的企业级关系型数据库完全兼容 SQL 标准支持空间数据引擎、高可用集群、嵌入式部署、跨平台兼容是国产替代、政企项目、嵌入式 GIS 开发的首选数据库之一。1.2 版本选择表格版本适用场景下载地址DM8 企业版生产环境、企业级项目、高可用集群达梦官网 武汉达梦数据库股份有限公司DM8 开发版开发测试、个人学习、嵌入式部署达梦官网下载中心免费授权DM7 稳定版老项目兼容、嵌入式轻量部署达梦官网历史版本本文以DM8 开发版为基准所有操作兼容企业版。二、前期准备安装前必做避免 90% 的安装失败2.1 硬件与系统环境要求表格类型最低要求推荐配置GIS / 嵌入式CPU1 核2 核及以上x86_64/arm/aarch64 架构内存1G2G 及以上GIS 大数据场景建议 4G磁盘10G 空闲空间20G数据目录建议单独挂载分区操作系统Linux 内核 2.6 及以上CentOS7/Ubuntu16.04/ 统信 UOS / 麒麟网络可访问外网可选固定 IP防火墙开放 5236 端口达梦默认端口2.2 安装系统依赖包达梦数据库安装需要以下系统依赖提前安装避免报错bash运行# CentOS/RHEL/统信UOS 系列 yum install -y gcc gcc-c make cmake libaio-devel numactl-devel ncurses-devel bzip2 unzip # Ubuntu/Debian 系列 apt install -y gcc g make cmake libaio-dev libnuma-dev libncurses5-dev bzip2 unzip2.3 创建达梦专属用户与用户组达梦数据库禁止使用 root 用户直接安装和运行必须创建专属的dmdba用户这是新手最容易踩的坑bash运行# 1. 创建达梦用户组 dinstall groupadd dinstall # 2. 创建达梦运行用户 dmdba加入 dinstall 组 useradd -g dinstall dmdba # 3. 设置 dmdba 用户密码自定义建议8位以上 passwd dmdba # 4. 可选给 dmdba 用户添加 sudo 权限方便后续操作 echo dmdba ALL(ALL) NOPASSWD:ALL /etc/sudoers2.4 准备安装目录与权限建议将达梦安装目录、数据目录分开避免系统盘占满同时设置正确的权限bash运行# 1. 创建安装目录建议单独挂载分区 mkdir -p /opt/dm8 # 2. 创建数据目录GIS大数据场景建议单独挂载 mkdir -p /data/dm8 # 3. 设置目录所有者为 dmdba:dinstall chown -R dmdba:dinstall /opt/dm8 /data/dm8 # 4. 设置目录权限 chmod -R 755 /opt/dm8 /data/dm82.5 下载并上传安装包到达梦官网下载对应架构的安装包比如dm8_20240905_x86_64_rh7_64.zip上传到 Linux 服务器的/tmp目录解压bash运行# 解压安装包 unzip /tmp/dm8_20240905_x86_64_rh7_64.zip -d /tmp/dm8_install # 设置解压目录权限 chown -R dmdba:dinstall /tmp/dm8_install三、达梦数据库安装步骤分两种安装方式命令行静默安装推荐适配服务器 / 嵌入式无图形环境、图形化安装适配桌面 Linux你可根据场景选择。3.1 方式一命令行静默安装首选全场景适配静默安装无需图形界面一条命令完成安装适配服务器、嵌入式无图形环境是生产环境的首选方式。步骤 1切换到 dmdba 用户bash运行su - dmdba步骤 2执行静默安装命令核心参数说明-i安装类型install表示安装-p安装目录即之前创建的/opt/dm8-n安装组件Server表示数据库服务器Client表示客户端Drivers表示驱动-l安装语言zh_CN中文en英文bash运行# 执行静默安装完整安装含服务器客户端驱动 /tmp/dm8_install/DMInstall.bin -i install -p /opt/dm8 -n Server,Client,Drivers -l zh_CN步骤 3安装完成验证安装成功后会输出安装成功提示同时在/opt/dm8目录下生成完整的安装文件核心目录说明表格目录作用/opt/dm8/bin核心执行文件dminit、dmserver、disql 等/opt/dm8/conf配置文件目录dm.ini 核心配置文件/opt/dm8/drivers驱动目录ODBC、JDBC、Qt 开发所需驱动/opt/dm8/tool工具目录管理工具、数据迁移工具等3.2 方式二图形化安装桌面 Linux 适用如果你的 Linux 有图形界面可使用图形化安装向导步骤更直观切换到 dmdba 用户进入安装目录cd /tmp/dm8_install执行图形化安装程序./DMInstall.bin按照安装向导操作选择语言中文接受许可协议选择安装目录/opt/dm8选择安装组件勾选「服务器」「客户端」「驱动」点击安装等待完成安装完成后会自动创建菜单快捷方式。四、数据库初始化dminit 工具核心必做安装完成后必须使用dminit工具初始化数据库实例创建数据文件、控制文件、日志文件这是数据库启动的前提。4.1 核心初始化参数说明表格参数作用推荐值GIS / 嵌入式坑点说明PATH数据文件存放目录/data/dm8必须提前创建权限正确DB_NAME数据库名DMGISDB自定义大小写敏感后续连接必须一致INSTANCE_NAME实例名DMSERVER自定义服务管理、开机自启必须对应PORT_NUM数据库端口5236默认防火墙必须开放此端口PAGE_SIZE数据页大小8K或16KGIS 大字段场景建议 16K初始化后不可修改EXTENT_SIZE簇大小16大数据场景建议 32初始化后不可修改CHARSET字符集UTF-8中文乱码核心解决方案必须设置 UTF-8CASE_SENSITIVE大小写敏感N不敏感新手建议关闭避免表名 / 字段名大小写找不到问题LENGTH_IN_CHAR长度单位Y中文场景建议开启varchar 长度按字符计算4.2 执行初始化命令切换到 dmdba 用户执行dminit命令参数可根据你的需求调整bash运行# 切换到 dmdba 用户 su - dmdba # 执行数据库初始化GIS场景推荐配置 /opt/dm8/bin/dminit \ PATH/data/dm8 \ DB_NAMEDMGISDB \ INSTANCE_NAMEDMSERVER \ PORT_NUM5236 \ PAGE_SIZE16 \ EXTENT_SIZE32 \ CHARSETUTF-8 \ CASE_SENSITIVEN \ LENGTH_IN_CHARY4.3 初始化完成验证初始化成功后会输出create dm database success.提示同时在/data/dm8目录下生成数据文件、控制文件、日志文件核心文件/data/dm8/DMGISDB/control.ctl控制文件/data/dm8/DMGISDB/SYSTEM.DBF系统表空间数据文件/data/dm8/DMGISDB/MAIN.DBF主表空间数据文件/data/dm8/DMGISDB/ROLL.DBF回滚表空间数据文件/data/dm8/DMGISDB/REDO01.LOG重做日志文件五、核心配置文件详解dm.ini达梦数据库的核心配置文件是/opt/dm8/conf/dm.ini所有数据库运行参数都在此配置下面是 GIS / 嵌入式场景的核心配置项可根据需求调整。5.1 核心配置项说明表格配置项作用推荐值INSTANCE_NAME实例名必须和初始化时的 INSTANCE_NAME 一致默认 DMSERVERPORT_NUM数据库端口5236和初始化一致MAX_SESSIONS最大并发连接数嵌入式场景 100服务器场景 1000MEMORY_POOL内存池大小嵌入式场景 256M服务器场景 1GGIS 大数据场景 2GBUFFER数据缓冲区大小嵌入式场景 512M服务器场景 2GGIS 场景 4GREDO_BUFFER_SIZE重做日志缓冲区64M大数据场景 128MCHARSET字符集UTF-8和初始化一致CASE_SENSITIVE大小写敏感N和初始化一致AUTO_COMMIT自动提交0关闭开发场景建议 1开启LOGIN_MODE登录模式1正常模式调试场景可设为 2调试模式ENABLE_SPATIAL_ENGINE空间数据引擎1开启GIS 开发必须开启支持空间数据类型、空间索引5.2 配置修改方法切换到 dmdba 用户编辑 dm.ini 文件bash运行su - dmdba vim /opt/dm8/conf/dm.ini修改对应配置项保存退出重启数据库服务配置生效六、数据库启停与服务管理6.1 命令行启停方式最常用适配所有场景启动数据库bash运行# 切换到 dmdba 用户 su - dmdba # 启动数据库服务指定控制文件路径 /opt/dm8/bin/dmserver /data/dm8/DMGISDB/control.ctl启动成功后会输出SYSTEM IS READY提示此时数据库可正常连接后台启动在命令末尾加即/opt/dm8/bin/dmserver /data/dm8/DMGISDB/control.ctl 停止数据库bash运行# 方式1正常关闭推荐 /opt/dm8/bin/dmshutdown /data/dm8/DMGISDB/control.ctl # 方式2强制关闭紧急场景 pkill dmserver查看数据库运行状态bash运行# 查看 dmserver 进程是否存在 ps -ef | grep dmserver # 查看端口是否监听 netstat -tuln | grep 5236 # 或 ss 命令 ss -tuln | grep 52366.2 系统服务管理方式systemd推荐将达梦数据库注册为 Linux 系统服务可使用systemctl命令管理适配 CentOS7/Ubuntu16.04 等带 systemd 的系统。步骤 1创建 systemd 服务文件bash运行# 切换到 root 用户 su - root # 创建服务文件 vim /etc/systemd/system/dm8.service步骤 2写入服务配置内容ini[Unit] DescriptionDM8 Database Server Afternetwork.target syslog.target Wantsnetwork.target [Service] Typeforking Userdmdba Groupdinstall ExecStart/opt/dm8/bin/dmserver /data/dm8/DMGISDB/control.ctl -d ExecStop/opt/dm8/bin/dmshutdown /data/dm8/DMGISDB/control.ctl Restarton-failure RestartSec10 LimitNOFILE65535 LimitNPROC65535 [Install] WantedBymulti-user.target说明-d参数表示后台运行Restarton-failure表示异常退出自动重启适配嵌入式高可用场景。步骤 3重新加载 systemd 配置bash运行systemctl daemon-reload步骤 4服务管理命令bash运行# 启动服务 systemctl start dm8 # 停止服务 systemctl stop dm8 # 重启服务 systemctl restart dm8 # 查看服务状态 systemctl status dm8 # 设置开机自启 systemctl enable dm8 # 关闭开机自启 systemctl disable dm8 # 查看服务日志 journalctl -u dm8 -f七、开机自启配置适配嵌入式 / 服务器场景除了上面的 systemd 服务方式还可使用你之前熟悉的rc.local方式适配所有 Linux 发行版包括嵌入式系统。7.1 方式一rc.local 方式全发行版兼容步骤 1编辑 rc.local 文件bash运行# 编辑 rc.local 文件 vim /etc/rc.d/rc.local # 或 Debian/Ubuntu 系列 vim /etc/rc.local步骤 2添加开机自启命令在文件末尾添加以下内容注意切换到 dmdba 用户执行bash运行# 达梦数据库开机自启 su - dmdba -c /opt/dm8/bin/dmserver /data/dm8/DMGISDB/control.ctl -d步骤 3添加可执行权限启用服务bash运行# 给 rc.local 添加可执行权限 chmod x /etc/rc.d/rc.local # 启用 rc-local 服务 systemctl enable --now rc-local # 验证状态 systemctl status rc-local7.2 方式二嵌入式系统适配轻量系统如果是嵌入式 Linux 系统无 systemd可直接在/etc/inittab或启动脚本中添加自启命令和 rc.local 方式一致。八、客户端连接与基础操作8.1 命令行客户端disqldisql 是达梦数据库自带的命令行客户端类似 MySQL 的 mysql 客户端是开发、运维的核心工具。步骤 1连接数据库bash运行# 切换到 dmdba 用户 su - dmdba # 连接本地数据库默认端口5236用户名SYSDBA密码默认SYSDBA /opt/dm8/bin/disql SYSDBA/SYSDBAlocalhost:5236 # 连接远程数据库替换IP为你的服务器IP /opt/dm8/bin/disql SYSDBA/SYSDBA192.168.1.100:5236说明默认管理员用户名SYSDBA默认密码SYSDBA首次登录后建议修改密码。步骤 2基础 SQL 操作连接成功后可执行标准 SQL 语句示例sql-- 查看数据库版本 SELECT * FROM V$VERSION; -- 查看所有表空间 SELECT * FROM V$TABLESPACE; -- 创建用户 CREATE USER GISUSER IDENTIFIED BY 123456 DEFAULT TABLESPACE MAIN; -- 给用户授权 GRANT DBA TO GISUSER; -- 创建表GIS空间数据示例 CREATE TABLE GIS_POINT ( ID INT PRIMARY KEY, NAME VARCHAR(100), GEOM SDO_GEOMETRY -- 空间数据类型GIS开发专用 ); -- 插入空间数据 INSERT INTO GIS_POINT VALUES (1, 天安门, SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(116.403874, 39.914885, NULL), NULL, NULL)); -- 查询数据 SELECT * FROM GIS_POINT; -- 退出disql EXIT;8.2 图形化管理工具达梦数据库提供了图形化管理工具适配 Windows、Linux、macOS可在达梦官网下载核心工具DM 管理工具可视化管理数据库、表、用户、权限、备份恢复类似 NavicatDM 数据迁移工具支持 MySQL、Oracle、SQL Server 等数据库迁移到达梦DM 性能监控工具实时监控数据库性能、连接、资源占用九、Qt 开发对接达梦数据库贴合你的技术栈你之前的技术栈是 Qt/C 开发下面详细讲解 Qt 对接达梦数据库的完整步骤支持 Windows、Linux 跨平台开发。9.1 前置准备安装 Qt 开发环境Qt5.9 推荐和你之前的版本一致下载达梦数据库 ODBC 驱动Linux 下在/opt/dm8/drivers/odbc目录Windows 下在安装目录的drivers/odbc目录安装 unixODBC 驱动管理器Linux 下bash运行# CentOS 系列 yum install -y unixODBC unixODBC-devel # Ubuntu 系列 apt install -y unixodbc unixodbc-dev9.2 步骤 1配置 ODBC 数据源Linux 下配置编辑 ODBC 配置文件bash运行vim /etc/odbc.ini添加达梦数据源配置ini[DM8] Description DM8 ODBC Driver Driver /opt/dm8/drivers/odbc/libdodbc.so SERVER localhost PORT 5236 DATABASE DMGISDB USER SYSDBA PASSWORD SYSDBA CHARSET UTF-8验证数据源bash运行isql -v DM8连接成功表示 ODBC 配置正确。Windows 下配置打开「ODBC 数据源 (64 位)」选择「系统 DSN」点击「添加」选择「DM8 ODBC DRIVER」配置数据源名称、服务器 IP、端口、数据库名、用户名、密码点击「测试连接」成功后保存。9.3 步骤 2Qt 项目配置打开 Qt Creator新建 Qt Widgets 项目编辑.pro工程文件添加 SQL 模块和 ODBC 库路径qmakeQT core gui widgets sql # Linux 下 ODBC 库路径 unix { LIBS -L/opt/dm8/drivers/odbc -ldodbc INCLUDEPATH /opt/dm8/drivers/odbc } # Windows 下 ODBC 库路径 win32 { LIBS -LC:/dm8/drivers/odbc -ldodbc INCLUDEPATH C:/dm8/drivers/odbc }9.4 步骤 3Qt 代码连接达梦数据库核心代码示例可直接复制到你的 Qt 项目中cpp运行#include QApplication #include QMainWindow #include QSqlDatabase #include QSqlQuery #include QSqlError #include QDebug #include QTableView #include QSqlTableModel int main(int argc, char *argv[]) { QApplication a(argc, argv); QMainWindow w; w.resize(800, 600); // 1. 加载 ODBC 驱动连接达梦数据库 QSqlDatabase db QSqlDatabase::addDatabase(QODBC); // 配置连接参数数据源名称和ODBC配置一致 db.setDatabaseName(DM8); // 也可直接写连接字符串无需配置ODBC数据源 // db.setDatabaseName(DRIVER{DM8 ODBC DRIVER};SERVERlocalhost;PORT5236;DATABASEDMGISDB;UIDSYSDBA;PWDSYSDBA;CHARSETUTF-8); // 2. 打开数据库连接 if (!db.open()) { qDebug() 数据库连接失败 db.lastError().text(); return -1; } qDebug() 数据库连接成功; // 3. 执行SQL查询加载GIS数据 QSqlQuery query; if (!query.exec(SELECT * FROM GIS_POINT)) { qDebug() 查询失败 query.lastError().text(); return -1; } // 4. 显示数据到表格 QSqlTableModel *model new QSqlTableModel(w, db); model-setTable(GIS_POINT); model-select(); QTableView *view new QTableView(w); view-setModel(model); w.setCentralWidget(view); w.show(); return a.exec(); }9.5 关键说明Qt 5.9 自带QODBC驱动无需额外编译直接使用达梦数据库完全兼容标准 SQLQt 中操作和 MySQL、Oracle 完全一致无需修改业务代码GIS 空间数据可通过SDO_GEOMETRY类型读取结合 Qt 地图组件可实现 GIS 数据可视化跨平台开发Windows 和 Linux 下代码完全一致仅需在.pro中区分驱动路径即可十、高频常见问题与解决方案10.1 安装失败提示「权限不足」原因未使用 dmdba 用户安装或安装目录权限不正确解决方案严格按照本文步骤创建 dmdba 用户设置安装目录权限为dmdba:dinstall使用 dmdba 用户执行安装10.2 数据库启动失败提示「控制文件不存在」原因未执行 dminit 初始化数据库或控制文件路径错误解决方案先执行 dminit 初始化数据库确保启动命令中的控制文件路径和初始化时的 PATH 一致10.3 客户端连接失败提示「网络连接异常」原因 1数据库服务未启动检查 dmserver 进程是否存在原因 2防火墙未开放 5236 端口执行firewall-cmd --add-port5236/tcp --permanent firewall-cmd --reload原因 3IP / 端口错误检查连接字符串中的 IP 和端口是否正确原因 4SELinux 拦截临时关闭 SELinux 测试setenforce 010.4 中文乱码问题原因初始化数据库时未设置 UTF-8 字符集或客户端字符集不匹配解决方案重新初始化数据库设置CHARSETUTF-8客户端连接时设置字符集为 UTF-8ODBC 配置中添加CHARSETUTF-8Qt 代码中设置数据库连接的编码为 UTF-8db.setConnectOptions(SQL_ATTR_ODBC_VERSIONSQL_OV_ODBC3;SQL_ATTR_SET_NAMESUTF8);10.5 表名 / 字段名找不到提示「无效的表名」原因初始化数据库时开启了大小写敏感表名 / 字段名的大小写和 SQL 语句不一致解决方案重新初始化数据库设置CASE_SENSITIVEN关闭大小写敏感SQL 语句中的表名 / 字段名和创建时的大小写完全一致10.6 开机自启失败数据库未启动原因 1rc.local 无执行权限执行chmod x /etc/rc.d/rc.local原因 2systemd 服务文件配置错误检查 ExecStart 路径是否正确用户是否为 dmdba原因 3数据库启动命令中未加-d后台运行参数导致启动阻塞原因 4嵌入式系统中网络未启动就执行数据库启动导致端口监听失败在启动命令前加sleep 10等待网络启动十一、数据库卸载说明如需卸载达梦数据库按以下步骤操作避免残留文件停止数据库服务systemctl stop dm8 systemctl disable dm8切换到 dmdba 用户执行卸载程序/opt/dm8/uninstall.sh按照卸载向导选择完全卸载等待完成删除残留目录rm -rf /opt/dm8 /data/dm8删除系统服务文件rm -rf /etc/systemd/system/dm8.service删除用户和用户组userdel -r dmdba groupdel dinstall十二、最终总结达梦数据库安装配置的核心是创建专属 dmdba 用户→静默安装→dminit 初始化→systemd/rc.local 开机自启严格按步骤操作可避免 90% 的问题对于你的 Qt/GIS 开发场景重点关注空间数据引擎开启、UTF-8 字符集、ODBC 驱动配置、Qt 跨平台对接本文已覆盖所有核心步骤嵌入式部署场景优先使用静默安装、rc.local 开机自启、轻量配置适配嵌入式设备的资源限制所有操作均符合达梦官方规范可直接用于生产环境、政企项目、国产替代场景