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

你执行 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 连接失败错误。

相关推荐
javachen__1 小时前
mysql系统级文件损坏修复
数据库·mysql
倔强的石头1062 小时前
场景化落地指南——金仓时序数据库在关键行业的应用实践
数据库·时序数据库·kingbase
xj7573065332 小时前
《精通Django》 第7章 高级视图和URL配置
数据库·django·sqlite
海棠AI实验室2 小时前
第2篇:本地目录与资产标准(把“素材—文案—对话—上架”变成可追溯的生产线)
数据库·资产
数据知道2 小时前
在PostgreSQL中并发保存上亿个图片链接和图片md5的对应关系,如何做最合适?
数据库·postgresql
麦麦鸡腿堡2 小时前
MySQL_合计/统计函数
数据库·mysql
GIS之路2 小时前
ArcGIS Pro 添加底图的方式
前端·数据库·python·arcgis·信息可视化
alonewolf_992 小时前
深入理解Redis线程模型:单线程神话与原子性实战
数据库·redis·缓存·分布式架构
五阿哥永琪2 小时前
MySQL面试题 事务实现全解析:Undo Log、Redo Log、锁与 MVCC 协同机制详解
数据库·mysql