达梦数据库部署安装故障一

你执行 disql 登录达梦数据库时出现 [-70028]:创建SOCKET连接失败 报错,核心原因是 达梦数据库实例(dmserver)尚未启动,或实例未正常监听 5236 端口,导致 disql 无法建立 Socket 连接,具体分析和解决方案如下:

一、报错核心原因解析

  1. 核心根源:数据库实例未启动(最常见)
    你仅完成了数据库初始化(dminit 命令),但并未执行 dmserver 命令启动数据库实例,5236 端口处于未监听状态,disql 作为客户端无法与未运行的数据库实例建立 Socket 连接,因此抛出 -70028 错误。
    • 初始化(dminit):仅创建数据库的数据文件、配置文件、日志文件,相当于"生成了数据库的基础文件";
    • 启动实例(dmserver):才是"运行数据库服务",会监听指定端口(5236),接受客户端连接请求。
  2. 次要原因:实例启动失败/端口被占用(若已启动仍报错)
    若你已执行 dmserver 但仍报错,可能是:
    • 实例启动过程中出现权限、配置文件错误,导致未正常运行;
    • 5236 端口被其他程序占用,数据库无法监听该端口。

二、分步解决方案(先启动实例,再验证连接)

步骤1:先启动达梦数据库实例(核心操作,必须优先执行)

使用初始化后实际生成的 dm.ini 配置文件(注意路径:实际在 DMDB 目录下,而非 DAMENG)启动实例:

bash 复制代码
# 1. 进入达梦 bin 目录(确保在 dminit/disql 所在目录)
cd ~/dmdbms/bin

# 2. (推荐)后台启动数据库实例,并重定向日志(避免终端关闭导致实例停止)
# 先创建日志目录(存放启动日志,避免报错)
mkdir -p /dm/dbdata/dm_log

# 启动实例,指定实际的 dm.ini 路径(/dm/dbdata/dmdata/DMDB/dm.ini)
./dmserver /dm/dbdata/dmdata/DMDB/dm.ini > /dm/dbdata/dm_log/dmserver.log 2>&1 &
步骤2:验证数据库实例是否正常启动 & 5236 端口是否监听
  1. 验证进程是否存在(确认 dmserver 已运行)

    bash 复制代码
    # 查找 dmserver 进程
    ps -ef | grep dmserver | grep -v grep

    若输出类似如下内容,说明实例进程已启动:

    复制代码
    dmdba      12345      1  0 15:40 ?        00:00:01 ./dmserver /dm/dbdata/dmdata/DMDB/dm.ini
  2. 验证 5236 端口是否监听(核心,确保客户端可连接)

    bash 复制代码
    # 查看 5236 端口监听状态(ss 命令更简洁,兼容麒麟系统)
    ss -tulpn | grep 5236
    
    # 或用 netstat 命令(若系统安装 net-tools)
    netstat -tulpn | grep 5236

    若输出类似如下内容,说明 5236 端口已被 dmserver 监听,实例启动正常:

    复制代码
    tcp   LISTEN  0        128               0.0.0.0:5236           0.0.0.0:*       users:(("dmserver",pid=12345,fd=10))
步骤3:重新执行 disql 登录数据库(修正登录命令格式)

实例启动且端口监听正常后,修正 disql 登录命令格式(密码与端口分隔符、格式优化),重新登录:

bash 复制代码
# 方式1:完整格式登录(推荐,格式更规范,避免解析错误)
./disql SYSDBA/Dameng@123456:5236

# 方式2:简化格式登录(直接输入,按提示输入密码)
./disql SYSDBA@localhost:5236

注意:

  1. 你的密码是 Dameng@123456,若方式1登录提示密码错误,可使用方式2,手动输入密码(输入时密码不回显);
  2. 若麒麟系统开启了防火墙,需确保 5236 端口已开放(避免本地连接被拦截)。
步骤4:验证登录成功(关键标志)

若登录成功,终端会显示 SQL> 提示符,类似如下输出:

复制代码
disql V8
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 12.345 ms
SQL>

此时即可执行 SQL 命令(如 select version();)验证数据库功能正常。

三、补充:常见问题排查(若仍报 -70028 错误)

  1. 问题1:实例启动失败,无 dmserver 进程/5236 端口未监听

    查看启动日志,排查失败原因:

    bash 复制代码
    # 查看 dmserver 启动日志,查找错误信息
    cat /dm/dbdata/dm_log/dmserver.log

    常见失败原因:

    • 目录权限不足:/dm/dbdata 未授权给 dmdba:dinstall,执行 sudo chown -R dmdba:dinstall /dm/dbdata 修复;
    • 配置文件错误:dm.ini 中参数配置非法,可重新执行 dminit 初始化数据库;
    • 端口被占用:5236 被其他程序占用,更换端口(重新执行 dminit 时修改 PORT_NUM=5237)。
  2. 问题2:disql 命令格式错误

    避免以下错误格式:

    • 密码与端口之间缺少分隔符(:);
    • 包含多余空格(如 SYSDBA/ Dameng@123456:5236);
    • 远程连接时未指定正确 IP(本地连接可使用 localhost127.0.0.1)。
  3. 问题3:防火墙拦截 5236 端口(本地连接罕见,远程连接常见)

    临时关闭防火墙测试,排除拦截问题:

    bash 复制代码
    # 麒麟桌面版关闭防火墙
    sudo kylin-firewall -s off
    
    # 麒麟服务器版关闭 firewalld
    sudo systemctl stop firewalld

四、总结

  1. 报错核心:数据库实例未启动,5236 端口未监听,导致 disql 无法建立 Socket 连接;
  2. 关键步骤:先通过 dmserver 启动实例 → 验证 5236 端口监听 → 用规范格式执行 disql 登录;
  3. 成功标志:终端显示 SQL> 提示符,即可正常操作数据库。

按照上述步骤操作后,即可顺利登录达梦数据库,解决 -70028 连接失败错误。

相关推荐
爱可生开源社区1 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1771 天前
《从零搭建NestJS项目》
数据库·typescript
加号32 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏2 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐2 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再2 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
tryCbest2 天前
数据库SQL学习
数据库·sql
jnrjian2 天前
ORA-01017 查找机器名 用户名 以及library cache lock 参数含义
数据库·oracle
十月南城2 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark
Henry Zhu1232 天前
数据库:并发控制基本概念
服务器·数据库