如何在 DataGrip 中设置 SQL 服务器身份验证方法?

How to set SQL Server Authentication Method in DataGrip?

使用 DataGrip 连接到 SQL 服务器时,是否可以指定身份验证方法(SQL 服务器或 Windows 身份验证)?

我已经尝试使用 SQL Server(jTDS) 和 SQL Server(Microsoft) 驱动程序进行配置,但在这两个驱动程序上都没有看到选项。

使用 jTDS 驱动程序:

这取决于 connection/data 来源的设置。

即要为 Windows 身份验证设置连接:

  1. 在“常规”选项卡中,如果在 用户 字段中指定您的 Windows/AD 用户名。
  2. 在“Advanced”选项卡上,在 DOMAIN 属性 中,为 Windows 您在步骤 1 中输入的帐户。
  3. 如果您的网络未启用 Kerberos 身份验证,您可能需要设置 USENTLMV2=true

如果您没有在第 2 步中指定域,它会假设您正在进行 SQL 服务器身份验证登录尝试。

使用 Microsoft 驱动程序:

我无法在 OS X 上运行它,但大多数人似乎在 Windows 上没有问题。

  1. 在数据源的“Advanced”选项卡中,将 integratedSecurity 设置为 true。

n.b。您可能还必须为实际的驱动程序设置此 属性,在 OS X 上我一直在 "This driver is not configured for Integrated Authentication",但这可能是 OS X 的事情。

希望对您有所帮助。

我能够使用 Microsoft 7.0.0 SQL 服务器 jdbc 驱动程序在 Intellij 2018.2 的 MacOS 上进行连接。

(首先,我假设您正在使用 Kerberos。要检查这一点,运行:

klist | grep krbtgt

如果您有 Kerberos 票证,您应该看到:

Aug 29 12:17:34 2018  Aug 29 22:17:34 2018  krbtgt/DOMAIN.COMPANY.COM@DOMAIN.COMPANY.COM

我在 Connecting using ActiveDirectoryIntegrated Authentication Mode 上使用了这篇文章来解决这个问题。请注意,我 而不是 必须 "Step 2: Configuring KDC in krb5.conf"。 )

确保将 jdbc 驱动程序设置为使用 integrated security and Java Kerberos

Picture of Advanced tab in Project Data Sources

Picture of Advanced tab in Project Data Sources showing authentication scheme

然后,在常规选项卡上,确保将 URL 旁边的下拉菜单更改为 "URL only",并输入以下形式的 URL:

jdbc:sqlserver://databaseserver.domain.company.com;database=testdatabase;integratedSecurity=true;authenticationScheme=JavaKerberos;encrypt=true;trustServerCertificate=true;

Picture of General tab in Project Data Sources

如果您在 "default" 上离开 URL 旁边的下拉菜单,它将尝试使用用户 name/password,如果您使用的是集成,这不是您想要的验证。另外,如果您在 URL 中留下 "trustServerCertificate=true;",请确保您知道自己在做什么。在生产中,您应该正确设置您的证书,但这不在此处要求的范围内。