Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 数据库管理 » 启动并连接到数据库 » SQL Anywhere 数据库连接 » Kerberos 验证

 

Kerberos 连接疑难解答

如果尝试启用或使用 Kerberos 验证时出现意外错误,建议在数据库服务器和客户端上均启用附加诊断消息。

如果在启动数据库服务器时指定 -z 选项,或者在服务器已经运行时执行 CALL sa_server_option( 'DebuggingInformation', 'ON' ),数据库服务器消息日志中将包含附加诊断消息。LogFile 连接参数可使客户端诊断信息写入指定的文件。除了使用 LogFile 连接参数之外,也可以执行命令 dbping -z。-z 参数显示有助于标识连接问题根源的诊断消息。

无法启动数据库服务器
症状 常用解决办法
[无法装载 Kerberos GSS-API 库] 消息
  • 确保数据库服务器计算机上已经安装 Kerberos 客户端,包括 GSS-API 库

  • 数据库服务器 -z 输出显示正在尝试装载的库名。验证库名是否正确。如有必要,可使用 -kl 选项指定正确的库名。

  • 确保目录和所有支持库都列在库路径(在 Windows 上为 %PATH%)中。

  • 如果数据库服务器 -z 输出显示 GSS-API 库缺少入口点,则该库不是受支持的第 5 版本 Kerberos GSS-API 库。

[无法获取服务器名 "server-name" 的 Kerberos 证书] 消息
  • 确保 KDC 中具有 server-name@REALM 的主体。主体区分大小写,因此请确保数据库服务器名与主体名的用户部分大小写一致。

  • 确保 SQL Anywhere 服务器的名称是主体的主要/用户部分。

  • 确保服务器的主体已被提取到一个 keytab 文件中,并且此 keytab 文件位于 Kerberos 客户端的正确位置。请参见Kerberos 客户端

  • 如果数据库服务器计算机上的 Kerberos 客户端的缺省域与服务器主体内的域不同,请使用 -kr 选项指定服务器主体内的域。

[Kerberos 登录失败] 客户端错误
  • 检查数据库服务器的诊断消息。服务器所用的 keytab 文件的某些问题在客户端尝试进行验证时才会发现。

Kerberos 客户端连接疑难解答

如果客户端在尝试使用 Kerberos 验证进行连接时出现错误:

症状 常用解决办法
[不支持 Kerberos 登录] 错误,并且 LogFile 内包含消息 [未能装载库 Kerberos GSS-API]
  • 确保客户端计算机上已安装了 Kerberos 客户端,包括 GSS-API 库。

  • LogFile 所指定的文件列出尝试装载的库的名称。检查库名是否正确,如有必要可使用 Kerberos 连接参数指定正确的库名。

  • 确保库路径(在 Windows 上为 %PATH%)中包含所有支持库的目录。

  • 如果 LogFile 输出显示 GSS-API 库缺少入口点,则该库不是受支持的第 5 版本 Kerberos GSS-API 库。

[不支持 Kerberos 登录] 错误
  • 确保数据库服务器已经通过指定一个或多个 -krb、-kl 或 -kr 服务器选项启用了 Kerberos 登录。

  • 确保客户端和服务器平台上的 SQL Anywhere 均支持 Kerberos 登录。

[Kerberos 登录失败] 错误
  • 确保用户已经登录到 Kerberos 且拥有尚未过期的有效票据授予票据。

  • 确保将客户端计算机和服务器计算机的时间同步到相差不到 5 分钟。

[login_mode 设置不容许登录模式 'Kerberos'] 错误
  • login_mode 选项的公共或临时公共数据库选项设置中必须包含值 Kerberos 以允许 Kerberos 登录。

[登录 ID 'client-Kerberos-principal' 未被映射到任何数据库用户 ID]
  • 必须使用 GRANT KERBEROS LOGIN 语句将 Kerberos 主体映射到一个数据库用户 ID。注意,必须将包括域在内的完整客户端主体提供给 GRANT KERBEROS LOGIN 语句,只在实例或域内有差异的主体将被区分对待。

  • 或者,如果希望所有尚未明确映射的有效 Kerberos 主体能建立连接,可使用 GRANT CONNECT 创建一个带密码的 Guest 数据库用户 ID。