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

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

相关推荐
fen_fen13 小时前
Oracle建表语句示例
数据库·oracle
砚边数影15 小时前
数据可视化入门:Matplotlib 基础语法与折线图绘制
数据库·信息可视化·matplotlib·数据可视化·kingbase·数据库平替用金仓·金仓数据库
orange_tt15 小时前
Djiango配置Celery
数据库·sqlite
云小逸16 小时前
【nmap源码学习】 Nmap网络扫描工具深度解析:从基础参数到核心扫描逻辑
网络·数据库·学习
肉包_51116 小时前
两个数据库互锁,用全局变量互锁会偶发软件卡死
开发语言·数据库·c++
霖霖总总16 小时前
[小技巧64]深入解析 MySQL InnoDB 的 Checkpoint 机制:原理、类型与调优
数据库·mysql
此刻你17 小时前
常用的 SQL 语句
数据库·sql·oracle
それども17 小时前
分库分表的事务问题 - 怎么实现事务
java·数据库·mysql
·云扬·18 小时前
MySQL Binlog 配置指南与核心作用解析
数据库·mysql·adb
天空属于哈夫克318 小时前
Java 版:利用外部群 API 实现自动“技术开课”倒计时提醒
数据库·python·mysql