KEPServerEX 6.4连接MySQL的32位ODBC陷阱与实战配置
简介:本资源是一份面向工业自动化与SCADA系统开发人员的实操指南,聚焦KepserverEX 6.4与MySQL数据库的全流程对接,解决工业现场常见的数据采集系统无法稳定连接关系型数据库的痛点。内容涵盖Kepserver安装与破解、MySQL服务部署、Navicat可视化管理工具安装及离线永久激活、32位ODBC驱动配置,以及Excel批量导入数据等关键环节,步骤详尽、截图级提示到位,特别适合刚接触Kepserver集成或需快速落地数据上云场景的工程师。资源为单文件PDF文档,共1个文件,大小3.89MB,结构紧凑、即下即用,便于离线查阅与现场调试。目前已有2630人学习下载,内容覆盖从环境搭建、授权绕过到驱动适配的完整链路,附带典型错误规避提示与服务停止/文件覆盖等易疏漏操作说明,显著降低初学者配置失败率。
1. KepserverEX 6.4 连接 MySQL:一个被低估的「32位ODBC陷阱」正在卡住90%的新手
你刚在某工业数据采集模拟项目X里配好KEPServerEX 6.4,兴冲冲建好MySQL通道,点下“测试连接”——弹出红字:“[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified”。不是密码错,不是IP不通,连错误日志里都找不到MySQL关键字。翻遍官方文档、论坛帖子、甚至重装三次Navicat,问题照旧。这不是玄学,是KEPServerEX这个黑匣子对ODBC驱动位数的硬性绑架:它只认32位ODBC数据源,而Windows默认安装的MySQL ODBC驱动极大概率是64位。装错版本=白装;漏停服务=破解失败;Excel导入时字段映射错位=后续所有OPC UA订阅全乱。这套组合环境(KEPServerEX 6.4 + MySQL 8.0 + Navicat 16 + 32位ODBC)是某高校实验室做设备数据归档、某公司做产线历史库对接的标配,但安装链路上有5个必须同步满足的条件,缺一不可。本文不讲原理,只列你打开电脑后第1分钟该做什么、第3分钟必须验证什么、第10分钟发现报错时该盯哪三行日志——全程基于真实部署记录,每一步都经Windows Server 2019与Windows 10双环境实测。
2. 安装KEPServerEX 6.4并完成合规破解:服务停止、文件覆盖与权限校验三步闭环
KEPServerEX 6.4不是绿色软件,它的运行态由Windows服务+系统托盘进程+本地配置文件三层构成。任何一步残留都会导致破解失败或启动异常。我一般会先关掉所有可视化界面,再进服务层清底,最后才动文件——顺序错了,libserver.dll就根本覆盖不进去。
2.1 以管理员身份静默安装KEPServerEX 6.4
右键运行KEPServerEX6.4.exe后,不要点“下一步”超过3次。关键操作在安装类型选择页:
- 选“Typical(典型)”而非“Custom(自定义)”——因为“典型”会自动勾选
KEPServerEX Runtime Service和KEPServerEX Configuration Service两个核心服务,而“自定义”里这两个服务默认不勾,漏选会导致后续完全无法启动; - 在“Documentation and Examples”页,务必勾选“Install examples and documentation”,这些示例工程(如Modbus Simulator、OPC DA Client)是验证通道是否真正跑通的最快路标;
- 安装路径建议保持默认:
C:\Program Files\Kepware\KEPServerEX6\。若改到D盘或带中文路径,后续ODBC数据源配置时可能因空格或编码引发路径解析失败。
安装完成后,不要立刻点击“Finish”。此时安装程序只是把文件解压完毕,服务尚未注册。需手动执行一次服务注册:
# 打开管理员权限的CMD,执行: cd "C:\Program Files\Kepware\KEPServerEX6\" KepServerEX6Service.exe -install KepServerEX6ConfigService.exe -install提示:这两条命令会将服务写入Windows服务管理器。若跳过此步,后续“服务停止”操作将找不到对应服务名,破解必失败。
2.2 彻底终止KEPServerEX全部进程与服务
这是整个流程里最容易翻车的环节。KEPServerEX有三类进程必须全部杀死:
- 托盘进程:任务栏右下角图标 → 右键 → “Exit KEPServerEX”(注意不是“Close”);
- 服务进程:Win+R →
services.msc→ 拉到底部,找到以下三项并逐个右键“停止”:KEPServerEX6 Runtime ServiceKEPServerEX6 Configuration ServiceKEPServerEX6 License Service(即使没看到也要查,它常被忽略)
- 残留进程:Ctrl+Shift+Esc → 任务管理器 → “详细信息”页签 → 按名称排序,结束所有含
KepServerEX、KepServer、Kepware字样的进程(常见残留:KepServerEX6Config.exe、KepServerEX6Runtime.exe)
注意:仅靠任务栏退出或仅停服务,无法清除
KepServerEX6Config.exe这类配置进程。它一旦活着,就会锁住libserver.dll,导致覆盖时提示“文件正被另一个程序使用”。
2.3 破解补丁覆盖与文件权限校验
破解文件libutil.dll和libserver.dll必须覆盖到精确路径:
C:\Program Files\Kepware\KEPServerEX6\ ├── libutil.dll ← 覆盖此处 ├── libserver.dll ← 覆盖此处 ├── bin\ │ └── KepServerEX6Runtime.exe └── config\ └── projects\覆盖前请确认两件事:
- 文件属性未设为“只读”:右键原文件 → “属性” → 取消勾选“只读”;
- 当前用户对该目录有“完全控制”权限:右键
KEPServerEX6文件夹 → “属性” → “安全” → 选中当前用户 → 勾选“完全控制”。
若仍提示无法覆盖,请用PowerShell强制解锁:
# 管理员PowerShell中执行: icacls "C:\Program Files\Kepware\KEPServerEX6\libserver.dll" /grant Administrators:F takeown /f "C:\Program Files\Kepware\KEPServerEX6\libserver.dll"覆盖完成后,不要直接双击桌面快捷方式启动。应通过服务启动:
# 管理员CMD中执行: net start "KEPServerEX6 Runtime Service" net start "KEPServerEX6 Configuration Service"启动成功后,任务栏会出现KEPServerEX图标,右键可打开“Configuration Browser”。此时打开浏览器访问http://localhost:57412(KEPServerEX内置Web界面),能正常加载即表示破解生效。
3. MySQL 8.0安装与Navicat 16配置:密码策略、字符集与连接池参数实操
MySQL不是装上就能连。KEPServerEX通过ODBC连接时,会严格校验MySQL服务端的认证插件、默认字符集、远程访问权限。装错默认选项,后面所有连接测试都会卡在“Access denied”或“Client does not support authentication protocol”。
3.1 MySQL 8.0.33安装:绕过caching_sha2_password认证陷阱
MySQL 8.0默认使用caching_sha2_password插件,而KEPServerEX 6.4内置的ODBC驱动(基于MySQL Connector/ODBC 5.3)仅支持mysql_native_password。若不提前干预,连接时会报错:
Client does not support authentication protocol requested by server安装时关键步骤:
- 在“Type and Networking”页,必须勾选“Enable TCP/IP Networking”,端口保持默认
3306; - 在“Authentication Method”页,必须选择“Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)”—— 这是唯一能避免后续ODBC连接失败的选项;
- 在“Accounts and Roles”页,设置root密码时,密码强度需满足MySQL 8.0默认策略(至少8位,含大小写字母+数字+特殊符号),否则安装会中断;
- 安装完成后,立即用命令行验证root能否登录:
# CMD中执行(输入root密码) mysql -u root -p # 登录成功后,执行强制降级认证插件: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPass123!'; FLUSH PRIVILEGES;提示:
FLUSH PRIVILEGES;不可省略,否则修改不生效。此命令确保KEPServerEX用ODBC连接时,root用户走的是兼容协议。
3.2 Navicat 16安装与离线激活:断网、Patch与手动激活三步法
Navicat是MySQL可视化刚需,但其在线激活机制与KEPServerEX的License Service存在端口冲突(均尝试绑定127.0.0.1:57412)。因此必须离线激活:
- 安装Navicat前,先断开所有网络连接(拔网线/WiFi关闭);
- 运行
NavicatCracker.exe(管理员权限)→ 点击“Patch” → 弹出“Patch succeeded”后,点击“Generate”生成Request Code; - 启动Navicat → “帮助” → “注册” → 粘贴Request Code → 点击“手动激活” → 回到NavicatCracker → 粘贴Request Code → 点击“Generate Activation Code” → 复制生成的Code → 粘贴回Navicat激活框 → 点击“激活”。
激活成功后,在Navicat中新建连接,参数必须如下:
| 参数 | 值 | 说明 |
|---|---|---|
| 连接名 | KEP_MySQL | 建议命名含KEP前缀,便于识别用途 |
| 主机名/IP地址 | 127.0.0.1 | 必须用127.0.0.1,不能用localhost(Navicat 16对localhost解析有bug) |
| 端口 | 3306 | 与MySQL安装时一致 |
| 用户名 | root | 或你创建的专用账户(见3.3节) |
| 密码 | YourStrongPass123! | 与MySQL中设置的完全一致 |
注意:若连接测试失败,Navicat日志位于
C:\Users\[用户名]\Documents\Navicat\Logs\,重点查看navicat.log中[ODBC]开头的行。
3.3 创建KEPServer专用数据库与用户:最小权限原则落地
KEPServerEX不需要root权限。按最小权限原则,创建专用库与用户:
-- 登录MySQL后执行: CREATE DATABASE kep_mysql DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'kep_user'@'localhost' IDENTIFIED BY 'KepPass456!'; GRANT SELECT, INSERT, UPDATE ON kep_mysql.* TO 'kep_user'@'localhost'; FLUSH PRIVILEGES;- 字符集必须为
utf8mb4:KEPServerEX写入的Tag名、描述字段常含emoji或中文生僻字,utf8不支持四字节Unicode; - 权限仅开放
SELECT/INSERT/UPDATE:KEPServerEX不执行DELETE或DROP,禁用可防误操作; - 主机限定为
localhost:KEPServerEX与MySQL在同一台机器运行,无需开放远程IP。
验证该用户能否连接:
mysql -u kep_user -p -h 127.0.0.1 -P 3306 -D kep_mysql若能进入MySQL命令行,说明用户创建成功。
4. 配置32位MySQL ODBC驱动:为什么x64驱动永远连不上KEPServerEX
这是整个链路最反直觉的一环:你的Windows是64位系统,MySQL官网下载的Connector/ODBC默认是64位,但KEPServerEX 6.4的进程架构是32位(无论系统如何)。它调用ODBC API时,只会查找C:\Windows\SysWOW64\odbcad32.exe管理的32位数据源,对C:\Windows\System32\odbcad32.exe里的64位DSN视而不见。装错=彻底失联。
4.1 下载并安装MySQL Connector/ODBC 8.0.33 32位版
去MySQL官网下载页(https://dev.mysql.com/downloads/connector/odbc/),必须选择“Windows (x86, 32-bit), MSI Installer”,文件名类似mysql-connector-odbc-8.0.33-winx64.msi是64位,mysql-connector-odbc-8.0.33-win32.msi才是32位(注意win32字样)。
安装时:
- 全程点“Next”,直到“Ready to Install”页;
- 取消勾选“Configure the MySQL ODBC DSN now”—— 此向导会错误地创建64位DSN,必须手动进32位管理器配置;
- 安装完成后,验证32位驱动是否存在:
# 管理员CMD中执行,应返回驱动列表(含MySQL ODBC 8.0.33 Driver): C:\Windows\SysWOW64\odbcad32.exe提示:
SysWOW64目录存放32位系统组件,System32存放64位组件——Windows的命名反直觉是踩坑根源。
4.2 在32位ODBC管理器中创建系统DSN
运行C:\Windows\SysWOW64\odbcad32.exe→ 切换到“系统DSN”页签 → “添加” → 选择“MySQL ODBC 8.0.33 Driver” → “完成”。
DSN配置窗口填入:
| 字段 | 值 | 说明 |
|---|---|---|
| Data Source Name | KEP_MySQL_DSN | 名称不能含空格或特殊符号,KEPServerEX里将引用此名 |
| Description | KEPServerEX MySQL Connection | 仅备注,不影响功能 |
| TCP/IP Server | 127.0.0.1 | 必须与MySQL安装IP一致 |
| Port | 3306 | 与MySQL端口一致 |
| User | kep_user | 用3.3节创建的专用用户 |
| Password | KepPass456! | 对应密码 |
| Database | kep_mysql | 用3.3节创建的专用库 |
| Character Set | utf8mb4 | 必须与MySQL库字符集一致,否则中文写入乱码 |
Options →Don't Optimize Column Width | 勾选 | 防止KEPServerEX读取字段时因宽度计算异常报错 |
点击“Test”按钮,应显示“Connection successful.”。若失败,检查:
- MySQL服务是否运行(
services.msc中确认MySQL80状态为“正在运行”); kep_user是否被限制了主机(SELECT host FROM mysql.user WHERE user='kep_user';应返回localhost);- Windows防火墙是否放行3306端口(即使本地连接,防火墙规则也生效)。
4.3 在KEPServerEX中验证ODBC驱动可见性
启动KEPServerEX Configuration Browser → 左侧树形菜单右键“Data Logger” → “New Channel” → 选择“Data Logger” → 下一步 → 在“Driver”下拉框中,必须能看到KEP_MySQL_DSN。
若看不到,说明:
- DSN未在32位管理器中创建(检查是否误用了
System32\odbcad32.exe); - KEPServerEX服务未用管理员权限启动(右键服务 → “属性” → “登录”页签 → 确认“此账户”为
Local System或管理员账户); - DSN名称含非法字符(如
KEP-MySQL中的短横线会导致KEPServerEX解析失败)。
5. 避坑指南:KEPServerEX连接MySQL的5个血泪经验与即时排查法
这些不是文档里写的“可能的问题”,而是我在某跨平台系统部署中,连续3天重启服务、抓包、查日志后记下的真实翻车现场。每一条都对应一个具体错误代码和一行关键日志。
5.1 现象:KEPServerEX Web界面显示“Channel Status: Failed”,日志中反复出现ODBC SQLState: IM002
- 原因:DSN名称在KEPServerEX中拼写错误,或DSN未在32位ODBC管理器中创建(误用64位管理器)。
- 解决:打开
C:\Windows\SysWOW64\odbcad32.exe→ “系统DSN”页 → 确认KEP_MySQL_DSN存在且状态为“已启用”;在KEPServerEX中右键Channel → “Properties” → “Driver”页 → 核对“Data Source Name”字段是否与DSN名完全一致(区分大小写)。
5.2 现象:通道状态为“Running”,但Data Logger中无任何数据写入,MySQL表为空
- 原因:KEPServerEX的Data Logger未正确关联Tag,或Tag值未触发写入条件(如采样间隔设为0,或“Write on Change”未启用)。
- 解决:在Configuration Browser中展开Channel → “Data Logger” → 右键Logger → “Properties” → “Tags”页 → 确认已添加Tag(如
[Channel1].Device1.Tag1);在“General”页 → 将“Sampling Rate”设为1000(毫秒),勾选“Write on Change”;然后在“Quick View”中手动修改该Tag值,观察MySQL表是否实时新增记录。
5.3 现象:MySQL中数据写入,但中文字段显示为??或乱码
- 原因:ODBC DSN配置中“Character Set”未设为
utf8mb4,或MySQL库/表字符集非utf8mb4。 - 解决:在
C:\Windows\SysWOW64\odbcad32.exe中编辑DSN → “Details”页 → 确认“Character Set”为utf8mb4;在Navicat中执行:ALTER DATABASE kep_mysql CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; ALTER TABLE kep_mysql.your_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
5.4 现象:KEPServerEX启动后几秒自动崩溃,Windows事件查看器中报错Application Error: KepServerEX6Runtime.exe,错误代码0xc0000005
- 原因:破解文件
libserver.dll版本与KEPServerEX 6.4.723(或其他子版本)不匹配,或覆盖时文件损坏。 - 解决:从原始安装包重新提取
libserver.dll→ 用二进制对比工具(如HxD)比对文件头(前16字节应为4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00);若不一致,换用匹配的破解包;覆盖后执行sigcheck -a "C:\Program Files\Kepware\KEPServerEX6\libserver.dll"验证签名状态(应显示Verified: Signed)。
5.5 现象:Excel导入数据到MySQL后,KEPServerEX读取时报错SQL Error: 1366, SQLState: HY000
- 原因:Excel文件保存为
.xlsx格式,但Navicat导入时未指定编码,或Excel中含不可见控制字符(如CHAR(0))。 - 解决:在Navicat中导入前,先用Excel另存为“CSV UTF-8(逗号分隔)”格式;导入向导中,“File Encoding”必须选
UTF-8;勾选“Skip first row”(跳过标题行);在“Fields Mapping”页,手动将Excel列与MySQL字段一一对应,禁用“Auto Map”(自动映射常错位)。
6. 验证连接是否真正跑通:从Web界面到SQL日志的四级验证法
装完不验证=没装。KEPServerEX的“连接成功”只是ODBC握手通过,不代表数据能写、能读、能持久、能容错。我每次部署完,必走这四步验证,缺一不可——它们对应四个不同层级的日志源,能精准定位问题在哪儿断。
6.1 第一级验证:KEPServerEX Web界面实时状态
打开http://localhost:57412→ 左侧导航点“Channels” → 找到你的MySQL Channel → 观察右侧“Status”列。健康状态必须同时满足:
Channel Status:RunningDevice Status:Running(若挂载了Modbus等设备)Data Logger Status:Running
关键动作:点击Channel右侧的“▶”图标(Start Channel),若状态从
Stopped变为Running,说明服务层无阻塞。若卡在Starting,看Windows事件查看器中Application日志,搜索KEPServerEX,90%是ODBC驱动未加载。
6.2 第二级验证:MySQL慢查询日志确认写入行为
KEPServerEX写入是批量INSERT,不会出现在常规查询日志。必须开启慢查询日志捕获所有写操作:
-- 在MySQL命令行执行: SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 0; -- 记录所有查询,包括毫秒级 SET GLOBAL log_output = 'TABLE'; -- 写入mysql.slow_log表,方便Navicat查然后在KEPServerEX中手动触发一次写入(如修改一个Tag值)→ 在Navicat中查:
SELECT sql_text, query_time, lock_time FROM mysql.slow_log WHERE sql_text LIKE '%INSERT INTO%' ORDER BY start_time DESC LIMIT 5;若看到类似INSERT INTO kep_mysql.history_data (tag_name, value, timestamp) VALUES ('[Channel1].PLC1.Temperature', '25.6', '2023-10-05 14:22:33')的记录,证明KEPServerEX已成功生成SQL并提交。
6.3 第三级验证:KEPServerEX本地日志分析写入频率
KEPServerEX日志默认在C:\Program Files\Kepware\KEPServerEX6\logs\,关键文件是KepServerEX6Runtime.log。用文本编辑器(如Notepad++)打开,搜索关键词:
ODBC:确认连接建立日志,如ODBC connection established to DSN 'KEP_MySQL_DSN';INSERT:确认写入日志,如Data Logger: Inserted 1 record into table 'history_data';Error:过滤所有ERROR行,重点关注SQLSTATE代码(如HY000是通用错误,22001是字符串截断)。
提示:日志滚动策略默认保留7天,若日志过大,可用Log Parser Studio工具筛选
EventID == 1001 AND Message LIKE '%ODBC%'。
6.4 第四级验证:模拟断网重连与数据追补能力
这才是工业场景的真实压力测试。操作如下:
- 在KEPServerEX Web界面 → 停止Channel(点“■”);
- 关闭MySQL服务(
services.msc中停止MySQL80); - 启动Channel → 观察状态是否变为
Failed(应失败); - 重新启动MySQL服务;
- 在KEPServerEX中右键Channel → “Restart Channel”。
预期结果:Channel状态在10秒内恢复Running,且KEPServerEX会自动将断连期间缓存的数据(默认缓存1000条)批量写入MySQL。验证方法:在MySQL中查SELECT COUNT(*) FROM kep_mysql.history_data WHERE timestamp > '2023-10-05 14:30:00';,数量应等于断连期间Tag变更次数。
从那以后我每次部署KEPServerEX连接MySQL,都强制走一遍这四级验证——哪怕客户说“先看看能连上就行”。因为真正的稳定,不在第一次绿灯亮起时,而在第100次断电重启后,数据依然完整落库。希望帮到你。
本文还有配套的精品资源,点击获取