你执行disql登录达梦数据库时出现[-70028]:创建SOCKET连接失败报错,核心原因是达梦数据库实例(dmserver)尚未启动,或实例未正常监听 5236 端口,导致disql无法建立 Socket 连接,具体分析和解决方案如下:
一、报错核心原因解析
- 核心根源:数据库实例未启动(最常见)
你仅完成了数据库初始化(dminit命令),但并未执行dmserver命令启动数据库实例,5236 端口处于未监听状态,disql作为客户端无法与未运行的数据库实例建立 Socket 连接,因此抛出-70028错误。- 初始化(
dminit):仅创建数据库的数据文件、配置文件、日志文件,相当于“生成了数据库的基础文件”; - 启动实例(
dmserver):才是“运行数据库服务”,会监听指定端口(5236),接受客户端连接请求。
- 初始化(
- 次要原因:实例启动失败/端口被占用(若已启动仍报错)
若你已执行dmserver但仍报错,可能是:- 实例启动过程中出现权限、配置文件错误,导致未正常运行;
- 5236 端口被其他程序占用,数据库无法监听该端口。
二、分步解决方案(先启动实例,再验证连接)
步骤1:先启动达梦数据库实例(核心操作,必须优先执行)
使用初始化后实际生成的dm.ini配置文件(注意路径:实际在DMDB目录下,而非DAMENG)启动实例:
# 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.log2>&1&步骤2:验证数据库实例是否正常启动 & 5236 端口是否监听
验证进程是否存在(确认 dmserver 已运行)
# 查找 dmserver 进程ps-ef|grepdmserver|grep-vgrep若输出类似如下内容,说明实例进程已启动:
dmdba 12345 1 0 15:40 ? 00:00:01 ./dmserver /dm/dbdata/dmdata/DMDB/dm.ini验证 5236 端口是否监听(核心,确保客户端可连接)
# 查看 5236 端口监听状态(ss 命令更简洁,兼容麒麟系统)ss -tulpn|grep5236# 或用 netstat 命令(若系统安装 net-tools)netstat-tulpn|grep5236若输出类似如下内容,说明 5236 端口已被
dmserver监听,实例启动正常:tcp LISTEN 0 128 0.0.0.0:5236 0.0.0.0:* users:(("dmserver",pid=12345,fd=10))
步骤3:重新执行disql登录数据库(修正登录命令格式)
实例启动且端口监听正常后,修正disql登录命令格式(密码与端口分隔符、格式优化),重新登录:
# 方式1:完整格式登录(推荐,格式更规范,避免解析错误)./disql SYSDBA/Dameng@123456:5236# 方式2:简化格式登录(直接输入,按提示输入密码)./disql SYSDBA@localhost:5236注意:
- 你的密码是
Dameng@123456,若方式1登录提示密码错误,可使用方式2,手动输入密码(输入时密码不回显);- 若麒麟系统开启了防火墙,需确保 5236 端口已开放(避免本地连接被拦截)。
步骤4:验证登录成功(关键标志)
若登录成功,终端会显示SQL>提示符,类似如下输出:
disql V8 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间 : 12.345 ms SQL>此时即可执行 SQL 命令(如select version();)验证数据库功能正常。
三、补充:常见问题排查(若仍报-70028错误)
问题1:实例启动失败,无 dmserver 进程/5236 端口未监听
查看启动日志,排查失败原因:# 查看 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:
disql命令格式错误
避免以下错误格式:- 密码与端口之间缺少分隔符(
:); - 包含多余空格(如
SYSDBA/ Dameng@123456:5236); - 远程连接时未指定正确 IP(本地连接可使用
localhost或127.0.0.1)。
- 密码与端口之间缺少分隔符(
问题3:防火墙拦截 5236 端口(本地连接罕见,远程连接常见)
临时关闭防火墙测试,排除拦截问题:# 麒麟桌面版关闭防火墙sudokylin-firewall -s off# 麒麟服务器版关闭 firewalldsudosystemctl stop firewalld
四、总结
- 报错核心:数据库实例未启动,5236 端口未监听,导致
disql无法建立 Socket 连接; - 关键步骤:先通过
dmserver启动实例 → 验证 5236 端口监听 → 用规范格式执行disql登录; - 成功标志:终端显示
SQL>提示符,即可正常操作数据库。
按照上述步骤操作后,即可顺利登录达梦数据库,解决-70028连接失败错误。