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 ist eine reine Go-Bibliothek und kompiliert nativ unter Linux und macOS ohne externe C-Abhängigkeiten. Dieser Artikel behandelt plattformspezifische Konfigurationen für Authentifizierung und Zertifikate.
Installation
Die Installation ist auf allen Plattformen gleich:
go get github.com/microsoft/go-mssqldb
Es werden weder ein ODBC-Treiber noch FreeTDS oder andere C-Bibliotheken benötigt.
SQL-Authentifizierung
SQL-Authentifizierung funktioniert identisch unter Linux, macOS und Windows:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025
NTLM-Authentifizierung
NTLM-Authentifizierung wird auf allen Plattformen unterstützt. Geben Sie einen domänenqualifizierten Benutzernamen an:
URL-Format
URL-kodieren Sie den Backslash in DOMAIN\user als %5C:
sqlserver://CONTOSO%5C<user>:<password>@<server>:1433?database=mydb
ADO-Format
Der Backslash im Benutzernamen löst die NTLM-Authentifizierung aus:
server=<server>;user id=DOMAIN\<user>;password=<password>;database=AdventureWorks2025
Der Treiber erkennt den Backslash im Benutzernamen und verwendet NTLM automatisch. Auf Linux oder macOS sind keine zusätzlichen Konfigurationen erforderlich.
Kerberos-Authentifizierung
Die Kerberos-Authentifizierung unter Linux und macOS verwendet das krb5 im Treiber eingebaute Paket. Es gibt keine externen Bibliotheksabhängigkeiten.
Prerequisites
Eine gültige Kerberos-Konfigurationsdatei. Der Standardpfad ist
/etc/krb5.conf:[libdefaults] default_realm = MYDOMAIN.COM dns_lookup_kdc = true [realms] MYDOMAIN.COM = { kdc = dc1.mydomain.com }Die SQL Server-Instanz muss einen Service Principal Name (SPN) registriert haben (zum Beispiel
MSSQLSvc/<server>.mydomain.com:1433).
Verbinden Sie sich mit einem Keytab
Spezifizieren Sie den Keytab-Dateipfad und das Kerberos-Reich in der Verbindungszeichenfolge:
sqlserver://<user>@MYDOMAIN.COM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYDOMAIN.COM&krb5-keytabfile=/etc/<user>.keytab
Verbinden Sie sich mit einem Zugangsdaten-Cache
Erstens: Hol dir ein Ticket:
kinit <user>@MYDOMAIN.COM
Dann verbinden Sie sich mit der zwischengespeicherten Zugangsdaten:
sqlserver://<user>@MYDOMAIN.COM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYDOMAIN.COM&krb5-credcachefile=/tmp/krb5cc_1000
Kerberos-Parameter
| Parameter | Vorgabe | Description |
|---|---|---|
krb5-configfile |
/etc/krb5.conf |
Pfad zur Kerberos-Konfigurationsdatei. |
krb5-realm |
- | Kerberos-Reich (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 Key Distribution Center (KDC) zu finden. |
krb5-udppreferencelimit |
1 |
Maximale UDP-Nachrichtengröße vor dem Wechsel zu TCP. |
Weitere Informationen finden Sie unter SQL Server und Windows-Authentifizierung.
Windows Authentication (SSPI) ist nicht verfügbar
Unter Linux und macOS ist Windows integrierte Authentifizierung (SSPI / trusted_connection=yes) nicht verfügbar. Nutzen Sie eine der folgenden Alternativen:
| Methode | Verbindungszeichenfolge |
|---|---|
| NTLM | sqlserver://DOMAIN%5Cuser:password@host?database=db |
| Kerberos (Tastentab) | sqlserver://user@REALM@host?database=db&krb5-realm=REALM&krb5-keytabfile=/path |
| Kerberos (cache) | sqlserver://user@REALM@host?database=db&krb5-realm=REALM&krb5-credcachefile=/path |
| SQL-Authentifizierung | sqlserver://user:password@host?database=db |
| Microsoft Entra ID |
sqlserver://host?database=db&fedauth=ActiveDirectoryDefault&encrypt=true&TrustServerCertificate=false (Treiber azuresql verwenden) |
Zertifikatkonfiguration
Unter Linux und macOS müssen TLS-Zertifikate, die mit den Parametern certificateserverCertificate verwendet werden, PEM-kodierte Dateien sein. Der Treiber liest sie, indem er direkt das crypto/tls-Paket von Go verwendet.
Systemvertrauensspeicher
Der Treiber verwendet den Standard-Vertrauensspeicher für Zertifikate des Betriebssystems. Unter Linux befindet sich dieser Vertrauensspeicher typischerweise bei /etc/ssl/certs/ oder /etc/pki/tls/certs/. Auf macOS wird der Systemschlüsselbund verwendet.
Um ein benutzerdefiniertes CA-Zertifikat zum Systemspeicher hinzuzufügen:
Ubuntu/Debian:
sudo cp myca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
RHEL/Fedora:
sudo cp myca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust
macOS:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain myca.crt
Alternativ verwenden Sie den certificate Verbindungsparameter, um das CA-Zertifikat direkt anzugeben, ohne den Systemspeicher zu verändern:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&certificate=/path/to/ca-cert.pem