知识库:MySQL DbLib 连接使用 Windows 凭据,而不是已配置的 MySQL 身份验证
Updated: 九月 08, 2026
在某些情况下,Altium Designer 的 DbLib 或 SVNDbLib 连接到 MySQL 时,可能会尝试使用当前的 Windows 用户账户进行身份验证,而不是使用已配置的 MySQL 凭据。这可能导致连接测试失败、重新打开连接对话框后出现身份验证错误,或者在 MySQL 日志中显示基于 Windows 的登录尝试。
该问题通常发生在 ODBC 数据源未能正确保存 MySQL 凭据时。配置一个已正确设置凭据的 64 位系统 DSN,可确保连接能够使用所需的 MySQL 凭据,并防止身份验证回退到 Windows 用户上下文。
解决方案详情
身份验证尝试使用了错误的账户
可能会观察到以下一种或多种症状:
- 除非每次都重新输入用户名和密码,否则“测试连接”会失败。
- 连接可暂时正常工作,但重新打开对话框后会失败。
- 可以看到表和架构,但在正常使用过程中身份验证失败。
- MySQL 日志显示登录尝试使用的是 Windows 用户和域,而不是 MySQL 账户。
- 同一个
.DbLib文件和 DSN 在一台机器上工作正常,但在另一台机器上失败。 - 连接测试仅在当前会话中成功,且不会持久保存。
凭据未持久保存到连接中
这种行为可能是由 Altium Designer、MSDASQL 和 MySQL ODBC 驱动程序之间的交互导致的:
- Altium Designer 不存储数据库凭据。在连接对话框中输入的值仅对当前会话有效。
- DbLib 和 SVNDbLib 连接使用 OLE DB 连接字符串,并且在连接到 ODBC 数据源时通常依赖 Microsoft 的 ODBC 提供程序 (MSDASQL)。
- MySQL ODBC 驱动程序会将凭据存储为 DSN 配置的一部分。
- 如果 DSN 未能正确持久保存凭据,OLE DB 提供程序将收不到任何数据库用户信息。
- 在未提供 MySQL 用户时,MSDASQL 可能会回退到当前 Windows 用户上下文。
- MySQL 不支持 Windows 集成身份验证,因此会导致身份验证失败。
- User DSNs更容易受到权限问题、安全策略、凭据持久化问题以及 32 位/64 位不匹配的影响。
- 能够浏览表或架构,并不一定能证明后续需要身份验证的操作一定会成功。
配置持久化的系统 DSN
- 请为 MySQL 使用配置了正确凭据的 64-bit System DSN。
- 在数据库库中引用该系统 DSN,而不要依赖会话期间输入的凭据。
- 在企业环境或经过安全加固的环境中,应避免使用 User DSNs。
确保 ODBC 驱动程序、DSN 和 Altium Designer 安装均为 64 位组件。
创建并验证系统 DSN
- 使用
C:\Windows\System32\odbcad32.exe以管理员权限打开 64 位 ODBC 管理器。 - 确认使用的是 64 位 ODBC 管理器,而不是 32 位版本。
- 选择 System DSN 选项卡,然后选择 Add。
- 选择 MySQL ODBC 8.0 Unicode Driver。
- 输入 MySQL 服务器名称、数据库名称、MySQL 用户名和 MySQL 密码。
- 选择 Test 并保存 DSN。
- 在 Altium Designer 中打开
.DbLib或.SVNDbLib文件。 - 引用已配置的 System DSN 并测试连接。
- 关闭并重新打开连接对话框,然后再次测试以验证凭据是否已持久保存。
- 验证 MySQL 服务器日志显示的是已配置的 MySQL 账户,而不是格式为
DOMAIN\Username的 Windows 账户。
附加说明
- Altium Designer 需要兼容的 64 位数据库访问层。
- Altium Designer 按设计不会保留数据库凭据。
- 在 Altium Designer 中重新输入凭据只能启用临时连接测试。
- ODBC 凭据是与机器相关的,必须在每一台打开
.DbLib或.SVNDbLib文件的工作站上进行配置。 - 可选:如果需要进一步排查,请检查系统 DSN 的注册表项。
- 如果同一个库在一台机器上可用、但在另一台机器上不可用,请比较 DSN 类型、驱动程序版本、驱动程序位数以及凭据持久化配置。