KEPServerEX6.4连MySQL:32位ODBC与系统DSN配置

发布时间:2026/10/31 7:21:27
KEPServerEX6.4连MySQL:32位ODBC与系统DSN配置 简介《Kepserver连接MySQL》是一份面向工业数据采集与数据库对接初学者的操作文档围绕 Kepserver 与 MySQL 的连接配置展开适合需要完成设备数据入库、SCADA/OPC 数据转存或课程实验的技术人员参考。资源包共 1 个 PDF 文件大小约 3.89MB内容集中在一份文档内便于按章节查阅。文档涵盖 Kepserver 安装与运行准备、MySQL 数据库部署、Navicat 可视化管理工具配置、32 位 ODBC 驱动安装以及通过 Excel 向数据库导入数据等关键环节并对连接过程中的常见配置要点和注意事项作了梳理。目前已有 2631 人学习可作为搭建 Kepserver 到 MySQL 数据链路时的对照材料帮助读者理解各软件之间的配合关系、驱动选择要求与整体实施流程减少在环境准备和连接调试阶段反复试错的时间。1. 从一次 Kepserver 连 MySQL 失败说起版本和位数先对齐上周在一台 Windows 工控机上Kepserver 6.4 已经能正常采集设备数据MySQL 服务也在跑Navicat 连本机数据库一点问题没有可 Kepserver 里新建 ODBC Client 设备时测试连接一直提示找不到驱动。排查到最后不是数据库密码错也不是端口被占而是 64 位系统里默认打开的 ODBC 管理器把 DSN 建到了 64 位那边Kepserver 要用的却是 32 位驱动。这个场景在工控数据落库项目里太常见了Kepserver、MySQL、Navicat、ODBC 四个东西版本和位数没对齐装完看着都正常一连接就翻车。下面按我实际装机的顺序把 KEPServerEX 6.4、MySQL、Navicat、32 位 ODBC 驱动和 Excel 导入数据这条链路拆开适合第一次搭这套环境的人照着走也适合已经装过但卡在 DSN 和位数上的熟手对照。2. 安装 KEPServerEX 6.4管理员权限、典型安装和补丁覆盖顺序Kepserver 这一端最容易出问题的不是安装向导而是安装完之后的补丁覆盖。很多人双击 exe 一路下一步装完直接开软件结果服务已经在后台跑起来补丁文件覆盖时提示被占用最后只能重装。我的习惯是先把安装包、补丁文件、安装目录路径三样东西放在同一个管理员桌面会话里避免中途切换用户导致权限不够。2.1 安装前先把服务状态和目录规划清楚安装前先确认机器上没有旧版 Kepserver 服务残留。旧服务没清干净新装 6.4 后可能出现两个服务名接近的实例后面停服务时你以为停完了其实还有一个在跑。常见做法是先在管理员 PowerShell 里查一遍# 查看是否已有 KEPServerEX 相关服务安装前先确认没有旧实例在跑 Get-Service | Where-Object { $_.Name -like *KEPServer* -or $_.DisplayName -like *KEPServer* } | Select-Object Name, DisplayName, Status, StartType这段命令只做一件事把服务名或显示名里带 KEPServer 的项列出来。Status是 Running 的先记下来StartType是 Automatic 的也记下来。如果机器是全新的结果为空最省事如果有旧版本先停服务再决定是升级还是卸载不要直接覆盖安装。安装目录我一般保持默认通常落在C:\Program Files (x86)\下的 Kepserver 安装目录里后面补丁覆盖和日志排查都按这个路径找。安装包右键选择“以管理员身份运行”不要双击直接开UAC 拦截会让部分注册表项写不进去。2.2 典型安装和示例文档的取舍运行KEPServerEX6.4.exe后弹窗点 OK然后一直下一步。到安装类型那一步选“典型”不要为了省空间去选自定义精简典型安装会把后面 ODBC Client 驱动、示例配置和文档组件带齐。示例和文档这一步建议勾上后面查 ODBC Client 设备属性时本机文档比到处翻网页快。安装路径、开始菜单名称保持默认即可工控机不是开发机路径里不要带中文和空格省得后面服务账户读取配置文件时出玄学问题。安装完成后先不要急着打开主界面。Kepserver 安装完一般会注册服务并启动运行时这时候直接覆盖补丁文件十有八九提示libutil.dll或libserver.dll被占用。正确顺序是先在任务栏右下角右键 KEPServerEX 图标退出主程序再打开任务管理器切到“服务”选项卡把所有 KEPServerEX 相关服务逐个右键停止。注意是“所有”不是只停一个运行时服务。停完之后再打开管理员 PowerShell 复核# 停止所有 KEPServerEX 服务给补丁文件覆盖让路 $svc Get-Service | Where-Object { $_.Name -like *KEPServer* -or $_.DisplayName -like *KEPServer* } $svc | ForEach-Object { if ($_.Status -eq Running) { Stop-Service -Name $_.Name -Force Write-Host 已停止服务: $_.Name } } $svc | Select-Object Name, StatusWhere-Object负责筛出 Kepserver 服务Stop-Service -Force会强制停止适合安装维护窗口内使用生产环境要先确认没有采集任务在跑。最后再列一次Name, Status确认全部是 Stopped。只有这一步干净了补丁覆盖才不会出现“文件被占用无法覆盖”。覆盖时把libutil.dll、libserver.dll两个文件复制到安装目录选择替换目标文件。覆盖完不要立刻启动主程序先回服务里把 Kepserver 服务启动再打开主界面看授权状态和运行时是否正常。提示补丁文件覆盖前一定确认服务全停文件被占用时不要反复点重试先回任务管理器看是否还有 Kepserver 进程残留在跑。2.3 安装后自检服务、版本和安装目录三件事装完 Kepserver 后我固定做三件事看服务是否自动启动、看主界面版本是不是 6.4、看安装目录下补丁文件时间是否已经更新。服务没起来后面 ODBC 测试再对也连不上版本不对补丁文件可能不匹配文件时间没变说明覆盖根本没成功。可以用下面这段命令做一次快速自检# Kepserver 安装后自检服务状态、安装目录关键文件时间 Get-Service | Where-Object { $_.Name -like *KEPServer* } | Select-Object Name, Status, StartType $installDir C:\Program Files (x86)\Kepware\KEPServerEX 6 if (Test-Path $installDir) { Get-ChildItem -Path $installDir -Filter lib*.dll | Select-Object Name, Length, LastWriteTime } else { Write-Host 安装目录不存在请按实际路径修改 $installDir }$installDir要按你机器上的实际安装目录改不要照抄。Get-ChildItem看libutil.dll和libserver.dll的LastWriteTime覆盖成功后时间应该是你刚才复制的时间。如果时间还是安装包原始时间说明补丁没覆盖进去回上一步停服务重做。Kepserver 这一端稳了再去装 MySQL顺序不要反否则后面 ODBC 测试失败时你分不清是数据库没起还是 Kepserver 服务没起。3. MySQL 安装Custom 选项里把服务端和连接器一次装齐MySQL 安装向导看起来简单真正容易漏的是安装类型和后面 ODBC 驱动的位数。很多人选默认安装装完发现只有服务端没有管理工具或者 ODBC 驱动装成了 64 位Kepserver 那边根本不认。我的做法是安装类型选 Custom把 MySQL Server、管理工具和需要用的连接组件一次选到右边后面少一次补装。3.1 Custom 安装步骤和组件选择运行 MySQL 安装包点击安装接受许可协议后下一步。安装类型选择“Custom”不要选默认的 Developer Default 或 Server Only。Custom 页面左边是可用组件右边是待安装组件把 MySQL Server 和管理工具加到右边。ODBC 驱动如果安装包里带 Connector/ODBC可以先不在这里装后面单独装 32 位包更稳因为 Kepserver 要的是 32 位驱动而安装向导默认可能给你 64 位。选好之后点下一步一路下一步到账号密码配置。到设置数据库管理员密码这一步root 密码要记在密码管理里不要用空密码也不要用123456这种。工控机虽然在内网但 MySQL 一旦被扫到弱口令后面数据被改了你连恢复都困难。密码设置完点 Execute等进度条走完最后完成。安装完成后 MySQL 服务一般会自动启动服务名通常是MySQL或MySQL80这类具体看安装时给的实例名。3.2 建库、建用户和最小权限MySQL 装完后不要直接用 root 给 Kepserver 用。root 权限太大ODBC 连接串一旦泄露整台数据库都能被改。我一般建一个专用库和专用账号只给 Kepserver 需要的读写权限。先用 Navicat 或命令行登录 root执行下面这段 SQL-- 创建 Kepserver 落库专用数据库字符集用 utf8mb4避免中文和特殊符号乱码 CREATE DATABASE IF NOT EXISTS kep_data DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci; -- 创建专用账号localhost 表示只允许本机连接跨机再按需改成具体网段 CREATE USER IF NOT EXISTS kep_userlocalhost IDENTIFIED BY 替换成你的强密码; -- 只给这个库的增删改查权限不给全局权限 GRANT SELECT, INSERT, UPDATE, DELETE ON kep_data.* TO kep_userlocalhost; FLUSH PRIVILEGES;utf8mb4是为了兼容中文和表情符号工控数据里虽然少但设备名、报警描述里经常有中文。kep_user只允许localhost因为 Kepserver 和 MySQL 装在同一台机器上走127.0.0.1最省事。如果 MySQL 和 Kepserver 不在同一台机器再把localhost改成 Kepserver 所在机器的 IP同时确认 MySQL 的bind-address和防火墙端口不要一上来就把 root 开放给所有网段。GRANT只给kep_data.*不给*.*这是最小权限原则后面 ODBC 测试失败时也更容易判断是不是权限问题。3.3 服务自检和命令行验证建完库和用户后先在 MySQL 本机验证账号能连、库能查。可以用命令行也可以用 Navicat但命令行更适合排错因为它不会帮你缓存连接。下面这段命令在 Windows 的 PowerShell 或 CMD 里执行mysql客户端路径按你安装目录改# 用专用账号验证 MySQL 本机连接和库权限 mysql -h 127.0.0.1 -P 3306 -u kep_user -p -D kep_data -e SELECT DATABASE(), CURRENT_USER(), VERSION();-h 127.0.0.1强制走 TCP不走命名管道和后面 ODBC 的连接方式一致-P 3306是默认端口如果你安装时改过端口要同步改-D kep_data直接选库执行SELECT DATABASE()能返回kep_data就说明库权限没问题CURRENT_USER()返回kep_userlocalhost说明账号匹配正确VERSION()只是看版本不影响连接。如果这一步就报Access denied先查密码和 host 匹配不要急着去 ODBC 里试数据库层没通ODBC 一定不通。4. Navicat 管理与 Excel 导入先建表再灌数据Navicat 在这套环境里主要干两件事一是让 MySQL 建库建表、查数据不用整天敲命令行二是用导入向导把 Excel 里的历史数据灌进数据库。安装本身不复杂麻烦的是授权环节和导入时的字段映射。我的习惯是先把表结构建好再用 Excel 导入导入失败时至少知道是数据问题还是表结构问题。4.1 Navicat 安装和授权环节的顺序运行 Navicat 安装包接受条款一路下一步到安装完成。安装路径默认即可不要和 MySQL 安装目录混在一起。安装完成后先不要联网打开授权环节按你手上的授权方式处理常见顺序是断开网络以管理员身份运行授权工具先点 Patch再点 Generate复制生成的注册码打开 Navicat菜单栏“帮助”-“注册”把注册码粘贴进去点击激活选择手动激活把 Navicat 里生成的请求码复制回授权工具生成激活码最后把激活码填回 Navicat 的激活码栏点击激活完成。按钮名称在不同工具版本里可能略有差异但顺序不要乱先 Patch 再 Generate断网状态下操作联网后容易触发校验失败。注意授权操作只在你已经获得授权的测试或生产环境里做商用环境按实际授权协议走不要拿来源不明的补丁往生产机上一盖了事。授权完成后打开 Navicat新建 MySQL 连接。连接名随便起主机填127.0.0.1端口3306用户名填kep_user密码填刚才建账号时的密码。先点“测试连接”通了再保存。不要用 root 在 Navicat 里长期挂着后面误操作删库的成本太高。连接建好后打开kep_data库准备建表。4.2 建一张能承接 Kepserver 数据的表表结构不要等 Kepserver 自己建ODBC Client 驱动对表结构的容忍度没你想的那么高。我一般先手工建一张设备数据表字段包含时间戳、设备名、点位名、数值和字符串值够大多数采集场景用。在 Navicat 查询窗口执行-- Kepserver 落库示例表时间戳 设备 点位 数值 字符串值 CREATE TABLE IF NOT EXISTS t_plc_data ( id BIGINT NOT NULL AUTO_INCREMENT, collect_time DATETIME NOT NULL, device_name VARCHAR(64) NOT NULL, tag_name VARCHAR(128) NOT NULL, tag_value DECIMAL(18,4) NULL, tag_text VARCHAR(255) NULL, PRIMARY KEY (id), KEY idx_collect_time (collect_time), KEY idx_device_tag (device_name, tag_name) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;id用自增主键避免 Kepserver 写入时还要自己算主键collect_time用DATETIMEExcel 导入时日期列要提前转成yyyy-mm-dd hh:mm:sstag_value用DECIMAL(18,4)浮点采集值够用不要用FLOAT存金额类数据tag_text留给字符串点位两个索引分别服务按时间查询和按设备点位查询。表建好后先用SELECT * FROM t_plc_data LIMIT 10;确认能查空的也没关系。4.3 Excel 导入向导的字段映射Excel 导入走 Navicat 的导入向导在左侧表列表里右键t_plc_data选择“导入向导”文件类型选 Excel选择你的.xlsx文件。下一步选 Sheet如果第一行是字段名就勾选“首行包含字段名”。再下一步是字段映射左边是 Excel 列右边是表字段id留空让数据库自增collect_time对应日期列device_name、tag_name、tag_value、tag_text按列名对上。日期列如果 Excel 里是文本格式导入向导里把目标字段类型设成DATETIME格式选yyyy-mm-dd hh:mm:ss如果 Excel 里是真日期格式直接映射通常也能识别。导入模式选“追加”不要选“更新”第一次灌历史数据追加最安全。编码选 UTF-8Excel 里如果有中文设备名导入前最好另存为 CSV UTF-8 再导.xlsx直接导中文偶尔会出乱码。点开始后看进度和错误日志如果有行失败先看是不是日期为空、数值列混了文字、字符串超过VARCHAR(255)。导入完成后执行-- 导入后校验行数、时间范围和空值情况 SELECT COUNT(*) AS total_rows, MIN(collect_time) AS min_time, MAX(collect_time) AS max_time, SUM(CASE WHEN tag_value IS NULL THEN 1 ELSE 0 END) AS null_value_rows FROM t_plc_data;total_rows和 Excel 行数对不上说明有行被跳过min_time、max_time看日期有没有变成0000-00-00null_value_rows太大说明数值列映射错了或者 Excel 里本来就有空值。这一步做完MySQL 里已经有可查的数据后面 ODBC 测试才有意义。5. ODBC 32 位驱动与 DSN配置顺序和四个高频排查点Kepserver 连 MySQL 的关键不是 Navicat 能连而是 32 位 ODBC 驱动和系统 DSN 能不能被 Kepserver 服务看见。Navicat 是独立客户端它自己能连不代表 Kepserver 能连Kepserver 的 ODBC Client 驱动走的是 Windows ODBC 接口位数不对、DSN 类型不对测试一定失败。这一章按“装驱动、建 DSN、配 Kepserver 设备、排查”四步走。5.1 安装 32 位 MySQL ODBC 驱动ODBC 驱动必须是 32 位不能是 x64。64 位 Windows 上默认双击odbcad32.exe打开的是 64 位管理器你在里面建的 DSNKepserver 的 32 位 ODBC Client 看不到。安装驱动时看文件名带win32或x86的才是 32 位包带x64的是 64 位。安装过程一路下一步即可装完用 32 位管理器确认驱动列表里能看到 MySQL ODBC 驱动。打开方式不是从控制面板直接点而是运行# 打开 32 位 ODBC 数据源管理器64 位系统上必须走 SysWOW64 C:\Windows\SysWOW64\odbcad32.exe这个路径是 32 位 ODBC 管理器的固定入口。打开后切到“驱动程序”选项卡看列表里有没有 MySQL ODBC 驱动。如果没有说明你装的是 64 位驱动或者根本没装成功如果有再切到“系统 DSN”准备建数据源。也可以用 PowerShell 快速看驱动列表# 查看已安装的 ODBC 驱动重点看 MySQL 相关项 Get-OdbcDriver | Where-Object { $_.Name -like *MySQL* } | Select-Object Name, Platform, VersionPlatform列能帮你判断是 32 位还是 64 位Name里带 MySQL 的项就是后面 DSN 要选的驱动。如果这里只有 64 位没有 32 位回安装包重装 win32 版本不要试图在 64 位管理器里建 DSN 糊弄过去。5.2 建系统 DSN不要建用户 DSN在 32 位 ODBC 管理器的“系统 DSN”选项卡里点“添加”选择 MySQL ODBC 驱动弹出配置窗口。关键参数如下参数建议值说明Data Source Namekep_mysqlKepserver 设备里要填这个名字别用中文TCP/IP Server127.0.0.1同机走本机回环跨机填 MySQL IPPort3306和 MySQL 实际端口一致Userkep_user专用账号不要用 rootPassword你的强密码和 MySQL 里建的一致Databasekep_data下拉选不到就手工填Character Setutf8mb4和建库字符集保持一致填完点“Test”测试成功后再点 OK 保存。为什么强调系统 DSN因为 Kepserver 服务通常以本地系统账户运行用户 DSN 只对当前登录用户可见服务账户读不到。系统 DSN 写在机器级注册表里服务启动后能直接按名称找到。建完后可以在 32 位管理器里再点一次“配置”-“Test”复核确认不是保存时密码被截断。5.3 Kepserver 里新增 ODBC Client 设备回到 KEPServerEX 6.4 主界面右键“连接性”新建 Channel名称比如MySQL_Channel设备驱动选择 ODBC Client。设备名比如MySQL_Device在设备属性里填 Data Source 为kep_mysqlUser 和 Password 按 DSN 里的专用账号填扫描模式先用默认或较慢的轮询别一上来就设毫秒级。建 Tag 时地址格式按 ODBC Client 驱动的要求填表名和列名组合先用一条只读查询验证不要直接上写入。配置完成后右键设备点“测试连接”或打开 OPC Quick Client 看 Tag 质量。如果 DSN 测试成功但 Kepserver 里报错先看 Kepserver 服务是不是还在用旧配置改完 DSN 或设备属性后重启一次 Kepserver 服务再试。Kepserver 的 ODBC Client 对表名、列名大小写和字段类型比较敏感MySQL 在 Linux 上表名大小写敏感、Windows 上默认不敏感跨平台迁移时容易在这里踩坑。5.4 四个高频排查点现象、原因、解决排查点一补丁覆盖提示文件被占用。现象是复制libutil.dll、libserver.dll时弹“文件正在使用”。原因是 Kepserver 主程序退了但后台服务还在跑或者任务管理器里还有残留进程。解决是按第 2 章的顺序先在任务栏退出主程序再到任务管理器服务选项卡停止所有 KEPServerEX 服务用Get-Service *KEPServer*复核全部 Stopped 后再覆盖。不要反复点重试越点越容易被系统锁文件。排查点二32 位 ODBC 管理器里看不到 MySQL 驱动。现象是打开C:\Windows\SysWOW64\odbcad32.exe后驱动列表没有 MySQL。原因是装成了 64 位驱动或者安装包本身是 x64。解决是卸载 64 位驱动重新下载文件名带win32或x86的 MySQL ODBC 驱动安装包装完再到 SysWOW64 管理器里确认。不要从 64 位管理器里“添加”一个试试位数不对添不进去。排查点三Navicat 能连Kepserver ODBC 测试失败。现象是 Navicat 测试连接成功Kepserver 设备测试报 DSN 找不到或登录失败。原因是 DSN 建成了用户 DSNKepserver 服务账户看不到或者 DSN 建在 64 位管理器里32 位驱动读不到。解决是删掉用户 DSN在 32 位管理器的“系统 DSN”里重建kep_mysql填同样的账号密码重启 Kepserver 服务后再测。这个坑我见过太多次血泪经验就是先确认 DSN 在哪一位管理器里。排查点四Excel 导入后中文乱码、日期变成 0000-00-00。现象是导入成功但中文设备名变问号日期列全是零。原因是 Excel 编码不是 UTF-8日期列是文本格式但导入向导按默认格式解析。解决是把 Excel 另存为 CSV UTF-8日期列统一改成yyyy-mm-dd hh:mm:ss文本再导导入向导里显式选 UTF-8 和目标字段DATETIME。导入前先拿十行数据试不要一次灌几万行再回头找哪一行错。6. 装完怎么验证从 DSN 测试到 Kepserver 读到第一条数据装完不等于通我一般按“数据库服务→账号查询→32 位 DSN→Kepserver 服务→Quick Client 读值→Excel 行数”六步验一遍任何一步不过都不往下走。先看 MySQL 服务是否 Running用专用账号执行一次查询-- 验证专用账号能查目标库和目标表 SELECT COUNT(*) AS cnt FROM kep_data.t_plc_data; SELECT CURRENT_USER(), DATABASE();COUNT(*)能返回数字说明库、表、账号权限都正常CURRENT_USER()应该是kep_userlocalhost如果变成 root说明你连错账号了。接着打开C:\Windows\SysWOW64\odbcad32.exe在“系统 DSN”里选中kep_mysql点“配置”-“Test”成功后再看 Kepserver 服务# 验证 Kepserver 服务和 MySQL 服务都在运行 Get-Service | Where-Object { $_.Name -like *KEPServer* -or $_.Name -like *MySQL* } | Select-Object Name, Status, StartTypeStatus全是 Running 后打开 KEPServerEX 主界面进 OPC Quick Client找到刚才建的 ODBC Client 设备下的 Tag看质量戳是不是 Good、值是不是和 MySQL 表里查出来的一致。如果质量是 Bad先回 32 位 DSN 测试再看 Kepserver 事件日志里有没有“Data source not found”这类关键词。最后回 Navicat 查一次导入行数-- 和 Excel 源文件行数对照确认导入没有漏行 SELECT COUNT(*) AS total_rows, MAX(collect_time) AS latest_time FROM kep_data.t_plc_data;total_rows和 Excel 去掉表头后的行数一致latest_time不是零值基本就说明这条链路跑通了。从那以后我每次装 Kepserver 连 MySQL都先把 32 位 ODBC 管理器打开确认系统 DSN再动 Kepserver 的 Channel宁愿多花五分钟也不想再为“Navicat 能连、Kepserver 连不上”返工。希望帮到你。本文还有配套的精品资源点击获取