你执行 disql 登录达梦数据库时出现 [-70028]:创建SOCKET连接失败 报错,核心原因是 达梦数据库实例(dmserver)尚未启动,或实例未正常监听 5236 端口,导致 disql 无法建立 Socket 连接,具体分析和解决方案如下:
一、报错核心原因解析
- 核心根源:数据库实例未启动(最常见)
你仅完成了数据库初始化(dminit命令),但并未执行dmserver命令启动数据库实例,5236 端口处于未监听状态,disql作为客户端无法与未运行的数据库实例建立 Socket 连接,因此抛出-70028错误。- 初始化(
dminit):仅创建数据库的数据文件、配置文件、日志文件,相当于"生成了数据库的基础文件"; - 启动实例(
dmserver):才是"运行数据库服务",会监听指定端口(5236),接受客户端连接请求。
- 初始化(
- 次要原因:实例启动失败/端口被占用(若已启动仍报错)
若你已执行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 端口是否监听
-
验证进程是否存在(确认 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 -
验证 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
注意:
- 你的密码是
Dameng@123456,若方式1登录提示密码错误,可使用方式2,手动输入密码(输入时密码不回显);- 若麒麟系统开启了防火墙,需确保 5236 端口已开放(避免本地连接被拦截)。
步骤4:验证登录成功(关键标志)
若登录成功,终端会显示 SQL> 提示符,类似如下输出:
disql V8
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 12.345 ms
SQL>
此时即可执行 SQL 命令(如 select version();)验证数据库功能正常。
三、补充:常见问题排查(若仍报 -70028 错误)
-
问题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:
disql命令格式错误避免以下错误格式:
- 密码与端口之间缺少分隔符(
:); - 包含多余空格(如
SYSDBA/ Dameng@123456:5236); - 远程连接时未指定正确 IP(本地连接可使用
localhost或127.0.0.1)。
- 密码与端口之间缺少分隔符(
-
问题3:防火墙拦截 5236 端口(本地连接罕见,远程连接常见)
临时关闭防火墙测试,排除拦截问题:
bash# 麒麟桌面版关闭防火墙 sudo kylin-firewall -s off # 麒麟服务器版关闭 firewalld sudo systemctl stop firewalld
四、总结
- 报错核心:数据库实例未启动,5236 端口未监听,导致
disql无法建立 Socket 连接; - 关键步骤:先通过
dmserver启动实例 → 验证 5236 端口监听 → 用规范格式执行disql登录; - 成功标志:终端显示
SQL>提示符,即可正常操作数据库。
按照上述步骤操作后,即可顺利登录达梦数据库,解决 -70028 连接失败错误。