资讯动态

KEPServerEX连接MySQL:32位ODBC与DSN配置避坑指南

发布时间:2026/10/31 7:20:54 来源:尧图企业网站定制
简介这份面向工业数据采集初学者的实操文档围绕 KEPServerEX 如何把现场数据写入 MySQL 数据库这一常见需求展开覆盖从软件安装配置到数据导入的完整链路。内容包含 KEPServerEX 6.4 的安装与破解要点、MySQL 数据库的定制安装流程与管理员密码设置、Navicat 可视化管理工具的安装及离线激活步骤并特别强调 ODBC 驱动必须选用 32 位版本这一易错细节最后给出使用 Excel 导入数据到数据库的具体做法可帮助读者避开驱动位数不匹配、服务占用导致补丁覆盖失败等常见问题。包内共 1 个 PDF 文件约 3.89MB篇幅精炼按安装模块分节排版便于对照操作逐步执行。已有 2631 人学习适合从事工业自动化、SCADA 系统集成以及需要打通 Kepserver 与关系型数据库数据通路的工程师参考。1. 装之前先对版本Kepserver 连接 MySQL 最容易崩在驱动位数上上周帮人复现一套 Kepserver 连接 MySQL 的环境机器是干净的 Windows 10 64 位KEPServerEX 6.4 装完、MySQL 装完、Navicat 也能连上结果一到建 DSN 这一步就卡住ODBC 数据源管理器里死活看不到 MySQL 的驱动。折腾了四十分钟才发现他打开的是System32目录下那个 64 位的管理器而 KEPServerEX 6.4 是 32 位进程它只认 32 位驱动和 32 位 DSN。这类翻车在工控数据采集现场太常见了——不是装不上是装上了对不上号。整套链路其实就四件事KEPServerEX 装好、MySQL 立起来、Navicat 能管、32 位 ODBC 打通任何一环位数错位后面全是白干。这篇写给第一次搭这套环境的人也写给被 64 位驱动坑过一次、想找份能对着抄的清单的人。2. 装 KEPServerEX 6.4从管理员权限到服务全停装 KEPServerEX 6.4 这一段表面上就是一路下一步真正决定后面能不能连库的是三件容易被忽略的事安装包必须以管理员身份跑、安装类型选典型、以及替换安装目录下的组件文件之前必须把所有 KEPServerEX 服务停干净。第三件事没做覆盖文件时会提示文件被占用很多人以为是安装包坏了其实是服务还在后台跑着。2.1 安装之前先把环境对齐KEPServerEX 6.4 是 32 位应用跑在 64 位 Windows 上没问题但它调用的所有 ODBC 组件都必须是 32 位版本这一条会贯穿全文。系统层面我一般确认这几项Windows 7 SP1 及以上或 Windows 10/11管理员账户不是把 UAC 关掉就完事是安装时真的右键“以管理员身份运行”磁盘留出至少 2 GB 给程序目录和日志安装期间把杀毒软件的实时防护临时放行安装目录——工控软件写服务和注册表项的动作多实时扫描拦一下就会变成“装到一半回滚”。另外提前确认端口占用。KEPServerEX 默认用 49345 之类的本地端口做运行时通信如果这台机器上已经跑着别的采集软件装完启动会报运行时无法初始化。查一下并不费事# 查看常见运行时端口是否已被占用 netstat -ano | findstr 49345 # 列出所有 KEPServerEX 相关服务及其状态装之前应该是空的 sc query type service state all | findstr /i KEPServer第一行是确认端口空闲第二行是确认这台机器上没装过旧版本或者装过但没卸干净。如果第二行有输出、状态是RUNNING先卸载旧版再装两版共存的服务名冲突会让新装的服务起不来。这一步我见过太多次“装了两遍都失败”的现场最后一查是残留服务占着名字。安装包建议放在本地磁盘不要放网络共享路径。KEPServerEX 安装过程中会多次回读自身文件网络路径断一下就直接失败报错信息还很不友好。2.2 一路“典型”安装示例和文档别取消勾选双击KEPServerEX6.4.exe之后第一屏是许可提示点 OK 继续接下来的向导里安装类型选“典型Typical”不要选自定义精简。典型安装会带上常用设备驱动和运行时组件后面建通道、建设备都靠这些驱动精简安装省的那点空间最后要花十倍时间补回来。到组件选择那一步会有一个“安装示例和文档”的勾选项。很多人习惯性取消觉得示例没用。这套环境里我建议留着示例工程里带现成的通道和设备结构配 ODBC 那一步如果标签建不出来可以直接拿示例对照字段名和数据类型比翻文档快。文档在本地也省得现场没网的时候抓瞎。装完不要急着点完成就打开主界面。先确认服务状态# 装完之后应该能看到运行时服务处于 RUNNING sc query type service state all | findstr /i KEPServer # 查看安装目录确认主程序和服务组件都在 Get-ChildItem C:\Program Files (x86)\KEPServerEX\6.4 -Filter *.exe | Select-Object Name第一行确认服务已注册并启动第二行确认主程序目录路径。注意路径里的Program Files (x86)——这是 32 位程序的默认落点也再次说明为什么后面必须用 32 位 ODBC 驱动。如果服务是STOPPED手动启动一次起不来就看 Windows 事件查看器的应用程序日志通常是权限或端口问题。2.3 覆盖组件文件之前服务必须全部停干净如果手上有授权配套的组件文件需要放到安装目录不同渠道拿到的授权方式不一样具体形式以你手上的为准覆盖动作本身有严格顺序顺序错了就是“文件被占用无法复制”。顺序是三步先关托盘程序再停服务最后覆盖。托盘程序在任务栏右下角右键 KEPServerEX 图标退出。这一步只是关掉界面进程服务还在跑。接着打开任务管理器的“服务”选项卡把所有名字里带 KEPServerEX 的服务逐个右键停止——注意是“所有”6.4 通常不止一个服务只停主服务剩下的仍会锁着 DLL。用命令行更保险能一次停全# 列出全部 KEPServerEX 服务名 $svc Get-Service | Where-Object { $_.Name -like *KEPServer* -or $_.DisplayName -like *KEPServer* } $svc | Select-Object Name, Status # 逐个停止已停止的会跳过 $svc | Where-Object { $_.Status -eq Running } | Stop-Service -Force # 复核输出里不应该再有 Running $svc | Select-Object Name, StatusGet-Service用名称和显示名双重匹配是因为不同版本的服务命名不完全一致只按KEPServer前缀过滤可能漏。Stop-Service -Force会连带停掉依赖该服务的子服务比在图形界面一个个点更彻底。最后一步复核不能省——我遇到过服务显示已停止、实际进程还在的情况用Get-Process再确认一遍更稳# 兜底确认没有残留进程锁着安装目录 Get-Process | Where-Object { $_.Path -like *KEPServerEX* } | Select-Object Id, ProcessName, Path输出为空才可以把组件文件复制到安装目录覆盖。复制完再按相反顺序把服务启动起来。如果覆盖之后主程序打不开、或者服务起不来第一件事是把原文件从备份还原——所以覆盖之前把安装目录里的同名文件另存一份这个习惯能省掉一次重装。3. MySQL 与 Navicat先把数据库这头立起来KEPServerEX 是数据来源MySQL 是落点中间靠 ODBC 串起来。数据库这头装不稳后面 DSN 建得再对也写不进数据。这一段分三块MySQL 用自定义安装挑组件、管理员密码和服务的初始化确认、Navicat 装完先连一次验证账号权限。3.1 MySQL 自定义安装组件别贪多端口和字符集先定死MySQL 安装向导第一步点安装接受许可后到安装类型选择选“Custom”。选自定义不是为了炫技是因为“Developer Default”会塞一堆用不上的组件比如示例库、可视化工具、 Connector 全家桶装完还要手动清理。自定义里我一般只勾这几项MySQL Server、MySQL Connector/ODBC注意位数后面单独讲、以及可选的 MySQL Shell。客户端工具用 Navicat 就够了不用重复装。勾选完点下一步向导会把所选组件列出来确认后开始安装。安装完成进入配置阶段这里几个参数要提前想好端口默认 3306如果这台机器上已经跑着别的 MySQL 实例改成 3307 之类并且记住这个端口——后面 Navicat 和 ODBC 都要填填错一个数字就是“连接被拒绝”。字符集建议显式选utf8mb4。默认走latin1或者随系统区域设置走工控现场采集的标签名、设备名里带中文是常事字符集不对导进去就是一堆问号而且这种问题往往要等到数据落库之后才发现。服务名保持默认的MySQL或MySQL80都行勾上“开机自启动”。工控机断电重启是常态不自启意味着每次恢复都要人工上去点一下。3.2 管理员密码与服务初始化确认配置向导里会要求设置 root 密码。这一步别图省事用弱密码也别用带特殊字符到影响命令行的组合——后面 ODBC 的 DSN 配置里要填这个密码某些特殊字符在连接串里需要转义新手很容易在这里卡住。用大小写字母加数字的 12 位左右就够。点 Execute 之后向导会依次执行初始化、启动服务、应用安全设置。每一行前面出现绿色勾才算过中途有红叉就展开看日志别硬着头皮点下一步。全部过了点 Finish。装完先做命令行验证别急着开图形工具# 用刚设的密码登录-P 指定端口如果改过端口这里要跟着改 mysql -u root -p -P 3306 -h 127.0.0.1 # 登录后确认版本、字符集、认证插件 SELECT VERSION(); SHOW VARIABLES LIKE character_set_server; SELECT user, host, plugin FROM mysql.user WHERE user root;第一条命令能进去说明服务、端口、密码三样都对。第二条看版本和字符集character_set_server应该是utf8mb4。第三条最关键看plugin字段MySQL 8.0 默认是caching_sha2_password而不少老版本的 ODBC 驱动和采集软件只认mysql_native_password。这个差异会在第四节和第五节反复出现先记下来。如果这台机器要给采集程序单独开账号别直接用 root-- 建一个只对目标库有权限的采集账号host 限定本机 CREATE USER collectorlocalhost IDENTIFIED WITH mysql_native_password BY 换成你的密码; CREATE DATABASE IF NOT EXISTS factory_data DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; GRANT ALL PRIVILEGES ON factory_data.* TO collectorlocalhost; FLUSH PRIVILEGES;这里显式用IDENTIFIED WITH mysql_native_password就是为了绕开认证插件不兼容的坑。库名factory_data是示例实际按项目命名。GRANT只给目标库权限而不是*.*采集账号不需要那么大权限出问题的时候影响面也小。3.3 Navicat 安装与首次连接Navicat 的安装本身没什么门槛接受条款、一路下一步到完成。激活环节按你手上的授权方式走官方流程完成后进入主界面。这里提醒一句激活过程中如果涉及断网操作做完记得把网络恢复不然后面 ODBC 驱动下载、MySQL 组件补装都会受影响。装完第一件事是建连接把刚才的库连上连接名local-factory 主机127.0.0.1 端口3306 用户名collector 密码3.2 里设的密码点“测试连接”通了再保存。这里有个小细节主机填127.0.0.1而不是localhost某些环境下localhost会走命名管道或 socket而 ODBC 那边走的是 TCP两边行为不一致会让排查变得混乱。统一用 IP后面 DSN 也填 IP出问题的时候变量少一个。连上之后在 Navicat 里把表结构建出来。Data Logger 写入的表至少要有一个时间戳字段和若干数值字段字段类型跟标签的数据类型对上-- 采集落库表时间戳 三个测点字段类型与标签类型对应 CREATE TABLE factory_data.tag_log ( log_time DATETIME NOT NULL, tag_temp DECIMAL(10,2) NULL, tag_press DECIMAL(10,2) NULL, tag_status INT NULL, PRIMARY KEY (log_time) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;log_time做主键是为了避免重复写入同一时刻的数据如果采集频率很高、同一秒可能有多条就把主键改成自增 ID 加普通索引。DECIMAL(10,2)对应模拟量INT对应状态量。字段名尽量用英文小写加下划线某些驱动对大小写和特殊字符的处理不一致名字简单能省掉一类玄学问题。4. 32 位 ODBC 驱动整条链路的胜负手前面所有步骤都顺最后卡在 DSN 建不出来的情况十次里有八次是驱动位数。这一节把原理和操作一起说清楚因为只记命令不理解原理换个机器又会错。4.1 为什么必须是 32 位驱动Windows 的 ODBC 有两套并存的驱动管理器和驱动集合64 位的那套在C:\Windows\System3232 位的那套在C:\Windows\SysWOW64。注意这个命名是反直觉的——64 位系统里System32放的是 64 位组件SysWOW64放的反而是 32 位组件。一个进程只能加载与自己位数相同的 ODBC 组件。KEPServerEX 6.4 是 32 位进程它调用 ODBC 时会去找 32 位的驱动管理器而 32 位管理器只认 32 位驱动、只读 32 位用户/系统 DSN。所以哪怕你装了 MySQL 官方的 64 位 Connector/ODBC在 32 位管理器里也是看不到的反过来你在 32 位管理器里建好的 DSN用 64 位程序去查也查不到。这就解释了一个很典型的现象MySQL 装好了、64 位驱动也装了、用 64 位程序测 ODBC 完全正常但 KEPServerEX 就是连不上、下拉框里空空如也。不是配置错了是打开错了窗口。4.2 装 32 位驱动并打开正确的管理器先确认机器上现在有什么# 查看已安装的 ODBC 驱动分别从 32 位和 64 位管理器读取 Get-OdbcDriver -Platform 32Bit | Where-Object { $_.Name -like *MySQL* } | Select-Object Name, Platform Get-OdbcDriver -Platform 64Bit | Where-Object { $_.Name -like *MySQL* } | Select-Object Name, Platform第一条有输出、第二条空说明只装了 32 位正是我们要的。如果第一条为空就去装 32 位版本MySQL 官网的 Connector/ODBC 安装包分 x86 和 x64文件名里带x86或32的那个才是。注意别被“我的系统是 64 位”误导这里要的是“我的调用方是 32 位”。安装时选“Typical”即可装完再跑一次上面的命令确认。驱动版本上8.0 系列的驱动连 MySQL 8.0 没问题连 5.7 也兼容但如果目标库是 5.7 而驱动是 8.0认证插件那一关还是要按 3.2 的做法处理。打开正确的管理器只需一条命令# 打开 32 位 ODBC 数据源管理器不是控制面板里那个 C:\Windows\SysWOW64\odbcad32.exe控制面板 → 管理工具 → ODBC 数据源在 64 位系统上打开的是 64 位版。别走那条路直接执行上面这条命令。窗口标题栏不会明确写位数判断方法是看“驱动程序”选项卡里有没有你刚装的 MySQL 驱动。4.3 系统 DSN 的参数逐项配置在 32 位管理器里切到“系统 DSN”选项卡点添加选 MySQL ODBC 驱动弹出配置框。参数一项项对参数填什么为什么Data Source Namedsn_factoryDSN 名字后面 KEPServerEX 里要原样选这个TCP/IP Server127.0.0.1与 Navicat 保持一致避免 socket 与 TCP 行为差异Port3306与 MySQL 实例端口一致改过就填改后的Usercollector采集专用账号不要用 rootPassword3.2 设的密码系统 DSN 会保存注意机器权限管理Databasefactory_data下拉选选不到说明账号没权限或库名拼错Character Setutf8mb4与建库时的字符集一致防中文乱码填完点“Test”弹出 Connection successful 才算过。测试失败时先别改参数先看错误码1045是账号密码错2003是端口或服务不通2059是认证插件不兼容——最后这个就是前面说的caching_sha2_password回 3.2 改成mysql_native_password再试。DSN 建好后可以顺手用注册表复核一下确认它确实落在 32 位分支里# 32 位系统 DSN 在 WOW6432Node 分支下 Get-ItemProperty HKLM:\SOFTWARE\WOW6432Node\ODBC\ODBC.INI\dsn_factory | Select-Object Driver, Server, Port, Database能看到Driver指向 Connector/ODBC 的 DLL 路径说明 DSN 建对了位置。如果这条命令报路径不存在说明 DSN 建到了 64 位分支回去用SysWOW64那个管理器重建。5. 避坑与排查五条踩过的记录这一段按“现象 → 原因 → 解决”写每条都是现场真遇到过的顺序大致按出现频率排。现象一ODBC 数据源里看不到 MySQL 驱动但驱动明明装了。原因打开的是 64 位 ODBC 管理器或者装的是 64 位驱动而调用方是 32 位程序。解决直接执行C:\Windows\SysWOW64\odbcad32.exe再用Get-OdbcDriver -Platform 32Bit确认驱动在 32 位分支下可见。现象二覆盖组件文件时提示“文件正在被另一个程序使用”。原因KEPServerEX 的服务没有全部停止或者托盘程序还在后台。解决按 2.3 的顺序先退托盘、再用Get-Service批量停服务、最后用Get-Process确认无残留进程三步做完再覆盖。覆盖前备份原文件。现象三DSN 测试连接报Authentication plugin caching_sha2_password cannot be loaded。原因MySQL 8.0 默认认证插件是caching_sha2_password当前 ODBC 驱动版本不认。解决把采集账号改成mysql_native_password命令见 3.2 的CREATE USER ... IDENTIFIED WITH mysql_native_password已有账号用ALTER USER collectorlocalhost IDENTIFIED WITH mysql_native_password BY 密码;改。改完FLUSH PRIVILEGES。现象四数据写进去了但中文标签名全是问号。原因三处字符集不一致——MySQL 服务端、表、DSN 连接参数任何一处不是utf8mb4都会断在中间。解决先用SHOW VARIABLES LIKE character_set_%看服务端再确认建表语句带了DEFAULT CHARSETutf8mb4最后回 ODBC 配置里把 Character Set 填成utf8mb4三处对齐。现象五Navicat 能连KEPServerEX 连不上DSN 测试却正常。原因DSN 建成了“用户 DSN”而不是“系统 DSN”KEPServerEX 的服务以系统账户运行读不到当前登录用户的用户 DSN。解决删掉用户 DSN在系统 DSN 选项卡下重建建完用 4.3 的注册表命令确认落在HKLM分支而不是HKCU。提示这五条里有三条最终都指向“位数”和“字符集”两个根因。排查时先问自己这两句能省掉一大半试错。6. 装完怎么验证从 Excel 导数据到 KEPServerEX 读到值环境装完不能只看“没报错”要跑一遍端到端。我的验证顺序是从数据库这头往采集那头推因为越靠近数据库的环节越容易定位。第一步用 Navicat 把 Excel 数据导进tag_log表验证写库通路。打开 Navicat右键目标表选“导入向导”文件类型选 Excel选中你的 xlsx下一步到字段映射。这一步唯一要盯的是列名和表字段的对应关系——Excel 里的中文表头在映射界面会显示乱码或者对不上改成按列序号映射更稳。导入模式选“追加”别选“复制”复制会重建表把字段类型冲掉。导完在表上右键“刷新”行数对得上就说明数据库这头的写入没问题。第二步回 32 位 ODBC 管理器把dsn_factory的“Test”再点一次。这一步确认驱动层没被前面的导入操作影响有时改过权限或者重启过服务DSN 会失效。第三步打开 KEPServerEX 主界面建通道和设备建两三个标签模拟量给个固定值或者用仿真驱动出一组数。然后在 Data Logger 里新建日志组数据源选dsn_factory目标表选tag_log把标签和字段一一映射上触发方式选“定时”并设成 5 秒一次启动日志组。第四步也是最关键的一步回 Navicat 查表-- 按时间倒序看最近写入的记录确认时间戳在往前走 SELECT log_time, tag_temp, tag_press, tag_status FROM factory_data.tag_log ORDER BY log_time DESC LIMIT 10; -- 统计最近五分钟的写入条数5 秒一条的话应该是 60 条左右 SELECT COUNT(*) AS cnt FROM factory_data.tag_log WHERE log_time NOW() - INTERVAL 5 MINUTE;第一行看数据内容字段值是不是你在 KEPServerEX 里设的那个时间戳是不是当前时间。第二行看节奏5 秒一条五分钟应该是 60 条上下偏差太大说明定时器没生效或者日志组被暂停了。如果表里有数据但时间是旧的多半是日志组启动了但通道没在跑如果表里一条没有回 ODBC 管理器点 Test从驱动层往上查。验证通过之后再回头做两件收尾的事把 KEPServerEX 的日志组配置导出备份一份把dsn_factory的参数不含密码记进项目的部署文档。这套环境的参数组合很容易失传换个人接手时光是猜 DSN 名字就能耗半天。从那以后我每次搭这套环境都会在装完驱动之后先跑一遍“32 位管理器打开、Get-OdbcDriver -Platform 32Bit确认、系统 DSN 建好、注册表核位”这四步再往下走配置。看着多花五分钟实际省的是后面那种“每步都正常但就是不通”的排查时间。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑