Product 关闭

知识库:MySQL DbLib 连接使用 Windows 凭据,而不是已配置的 MySQL 身份验证

Altium Designer Altium Designer
在某些情况下,Altium Designer 的 DbLib 或 SVNDbLib 连接到 MySQL 时,可能会尝试使用当前的 Windows 用户账户进行身份验证,而不是使用已配置的 MySQL 凭据。这可能导致连接测试失败、重新打开连接对话框后出现身份验证错误,或者在 MySQL 日志中显示基于 Windows 的登录尝试。 该问题通常发生在 ODBC 数据源未能正确保存 MySQL 凭据时。配置一个已正确设置凭据的 64 位系统 DSN,可确保连接能够使用所需的 MySQL 凭据,并防止身份验证回退到 Windows 用户上下文。

解决方案详情

身份验证尝试使用了错误的账户

可能会观察到以下一种或多种症状:

  • 除非每次都重新输入用户名和密码,否则“测试连接”会失败。
  • 连接可暂时正常工作,但重新打开对话框后会失败。
  • 可以看到表和架构,但在正常使用过程中身份验证失败。
  • MySQL 日志显示登录尝试使用的是 Windows 用户和域,而不是 MySQL 账户。
  • 同一个 .DbLib 文件和 DSN 在一台机器上工作正常,但在另一台机器上失败。
  • 连接测试仅在当前会话中成功,且不会持久保存。

Microsoft Data Link Error dialog showing connection test failure: provider initialization failed; MySQL ODBC 8.0 reports “Access denied for user ‘altium’@…de (using password: YES)”

凭据未持久保存到连接中

这种行为可能是由 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

  1. 使用 C:\Windows\System32\odbcad32.exe 以管理员权限打开 64 位 ODBC 管理器。
  2. 确认使用的是 64 位 ODBC 管理器,而不是 32 位版本。
  3. 选择 System DSN 选项卡,然后选择 Add。
  4. 选择 MySQL ODBC 8.0 Unicode Driver。
  5. 输入 MySQL 服务器名称、数据库名称、MySQL 用户名和 MySQL 密码。
  6. 选择 Test 并保存 DSN。
  7. 在 Altium Designer 中打开 .DbLib 或 .SVNDbLib 文件。
  8. 引用已配置的 System DSN 并测试连接。
  9. 关闭并重新打开连接对话框,然后再次测试以验证凭据是否已持久保存。
  10. 验证 MySQL 服务器日志显示的是已配置的 MySQL 账户,而不是格式为 DOMAIN\Username 的 Windows 账户。

附加说明

  • Altium Designer 需要兼容的 64 位数据库访问层。
  • Altium Designer 按设计不会保留数据库凭据。
  • 在 Altium Designer 中重新输入凭据只能启用临时连接测试。
  • ODBC 凭据是与机器相关的,必须在每一台打开 .DbLib 或 .SVNDbLib 文件的工作站上进行配置。
  • 可选:如果需要进一步排查,请检查系统 DSN 的注册表项。
  • 如果同一个库在一台机器上可用、但在另一台机器上不可用,请比较 DSN 类型、驱动程序版本、驱动程序位数以及凭据持久化配置。

参考资料

AI-LocalizedAI 翻译
如您发现任何问题,请选中相关文本/图片,并按 Ctrl + Enter 键向我们提交反馈。
Content