Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Treiber go-mssqldb unterstützt SQL Server-Authentifizierung, Windows integrierte Authentifizierung (SSPI), NTLM und Kerberos. Dieser Artikel behandelt jede Methode mit Verbindungszeichenfolge-Beispielen und Codebeispielen.
Für die Microsoft Entra ID-Authentifizierung siehe Microsoft Entra ID Authentifizierung.
Auswählen einer Authentifizierungsmethode
Verwenden Sie die beste Methode, die zu Ihrer Umgebung und Identitätsplattform passt:
| Bevorzuge diese Reihenfolge | Methode | Verwenden Sie ihn, wenn |
|---|---|---|
| 1 | Microsoft Entra ID | Du verbindest dich mit Azure SQL und kannst Managed Identity, Workload Identity oder einen anderen Entra-Flow verwenden, ohne Passwörter zu speichern. |
| 2 | Windows integrierte Authentifizierung (SSPI) | Deine App läuft unter Windows und kann die aktuelle Windows-Identität direkt verwenden. |
| 3 | Kerberos | Du spielst unter Linux oder macOS und hast bereits Kerberos-Tickets, Keytabs oder eine verwaltete Domain-Umgebung. |
| 4 | NTLM | Du brauchst eine Domain-Authentifizierung, aber Kerberos ist nicht verfügbar oder praktikabel. |
| 5 | SQL Server Authentifizierung | Du hast keine integrierte Identitätsoption und musst einen SQL-Login und ein Passwort verwenden. |
Wenn mehr als eine Methode funktioniert, bevorzugen Sie diejenige, die langjährige Geheimnisse vermeidet und mit dem nativen Identitätssystem der Host-Plattform übereinstimmt.
SQL Server Authentifizierung
Die SQL Server-Authentifizierung verwendet einen Anmeldenamen und ein Passwort, die in SQL Server gespeichert sind. Geben Sie die Parameter user id und password an:
URL-Format
Hinweis
Für URL-Verbindungszeichenfolgen müssen Sonderzeichen im Benutzernamen oder dem Passwort prozentkodiert werden. Benutzernamen für die Windows-Authentifizierung verwenden %5C als Domänentrennzeichen, z. B. sqlserver://DOMAIN%5Cusername:password@host. In ADO- und ODBC-Verbindungsstrings verwenden Sie die Literalform DOMAIN\username .
Geben Sie Benutzernamen und Passwort in der URL an:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true
ADO-Format
Verwenden Sie in einer Verbindungszeichenfolge im ADO-Stil die Schlüssel user id und password:
server=<server>;user id=<user>;password=<password>;database=AdventureWorks2025;Encrypt=true
Code-Beispiel
Verbinden Sie sich mit der SQL Server-Authentifizierung und überprüfen Sie die Verbindung:
package main
import (
"database/sql"
"log"
_ "github.com/microsoft/go-mssqldb"
)
func main() {
db, err := sql.Open("sqlserver",
"sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true")
if err != nil {
log.Fatal(err)
}
defer db.Close()
if err = db.Ping(); err != nil {
log.Fatal(err)
}
}
Windows integrierte Authentifizierung (SSPI)
Unter Windows verwendet der Treiber SSPI (Security Support Provider Interface) zur Authentifizierung mithilfe der aktuellen Zugangsdaten des Windows-Nutzers. Der Verbindungszeichenfolge benötigt keinen Benutzernamen oder Passwort.
sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes&encrypt=true
Hinweis
Die integrierte Authentifizierung von Windows über SSPI funktioniert nur, wenn die Go-Anwendung auf Windows läuft und der aktuelle Benutzer Zugriff auf die SQL Server-Instanz hat.
NTLM-Authentifizierung
NTLM-Authentifizierung funktioniert auf allen Plattformen (Windows, Linux und macOS). Geben Sie einen domänenqualifizierten Benutzernamen und Passwort an:
NTLM-URL-Format
URL-kodieren Sie den Backslash in DOMAIN\<user> als %5C:
sqlserver://DOMAIN%5C<user>:<password>@<server>?database=AdventureWorks2025&encrypt=true
Hinweis
Im URL-Format müssen Sie den Backslash in DOMAIN\<user> als %5C URL-codieren.
NTLM ADO Format
Der Backslash im Benutzernamen signalisiert die NTLM-Authentifizierung an den Treiber:
server=<server>;user id=DOMAIN\<user>;password=<password>;database=AdventureWorks2025;Encrypt=true
Der Treiber erkennt den Backslash im Benutzernamen und verwendet NTLM automatisch.
Kerberos-Authentifizierung
Die Kerberos-Authentifizierung funktioniert unter Linux und macOS, wenn das System eine gültige Kerberos-Konfiguration hat. Der Treiber verwendet das Paket für die krb5 Kerberos-Authentifizierung. Es gibt drei Methoden, um Zugangsdaten bereitzustellen.
Voraussetzungen
- Eine gültige
krb5.confDatei (Standardpfad:/etc/krb5.conf). - Der SQL Server muss einen registrierten Service Principal Name (SPN) besitzen.
Methode 1: Keytab-Datei
Eine Keytab-Datei enthält verschlüsselte Kerberos-Hauptschlüssel. Gib den Keytab-Dateipfad und das Realm des Benutzers an:
sqlserver://<user>@MYREALM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&krb5-keytabfile=/path/to/user.keytab&encrypt=true
Methode 2: Zugangsdaten-Cache
Verwenden Sie einen bestehenden Kerberos-Anmeldedaten-Cache, der von erstellt wird kinit.
sqlserver://<user>@MYREALM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&krb5-credcachefile=/tmp/krb5cc_1000&encrypt=true
Methode 3: Rohzugangsdaten
Gib das Passwort direkt in der Verbindungszeichenfolge an. Der Treiber verwendet die bereitgestellten Zugangsdaten, um den Kerberos-Authentifizierungsaustausch durchzuführen.
sqlserver://<user>@MYREALM:<password>@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&encrypt=true
Kerberos-Parameter
| Parameter | Standard | Description |
|---|---|---|
krb5-configfile |
/etc/krb5.conf |
Pfad zur Kerberos-Konfigurationsdatei. |
krb5-realm |
- | Kerberos-Reichsname, wie zum Beispiel MYDOMAIN.COM. |
krb5-keytabfile |
- | Pfad zur Keytab-Datei. |
krb5-credcachefile |
- | Pfad zur Credential-Cache-Datei. |
krb5-dnslookupkdc |
true |
Verwenden Sie DNS-SRV-Datensätze, um das KDC zu lokalisieren. |
krb5-udppreferencelimit |
1 |
Maximale Nachrichtengröße vor dem Wechsel von UDP zu TCP. |
ServerSPN |
- | Überschreiben Sie das automatisch generierte SPN. |