Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Sterownik go-mssqldb to czysta biblioteka Go, która kompiluje natywnie na Linuksie i macOS bez zewnętrznych zależności C. Ten artykuł omawia konfigurację specyficzną dla platformy dla uwierzytelniania i certyfikatów.
Installation
Instalacja jest taka sama na wszystkich platformach:
go get github.com/microsoft/go-mssqldb
Nie jest potrzebny żaden sterownik ODBC, FreeTDS ani inne biblioteki C.
Uwierzytelnianie SQL
Uwierzytelnianie SQL działa identycznie na Linuksie, macOS i Windows:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025
Uwierzytelnianie NTLM
Uwierzytelnianie NTLM jest obsługiwane na wszystkich platformach. Podaj nazwę użytkownika kwalifikowaną do domeny:
Format adresu URL
Zakoduj ukośnik odwrotny w adresie URL w DOMAIN\user w postaci %5C:
sqlserver://CONTOSO%5C<user>:<password>@<server>:1433?database=mydb
Format ADO
Ukośnik w nazwie użytkownika wywołuje uwierzytelnianie NTLM:
server=<server>;user id=DOMAIN\<user>;password=<password>;database=AdventureWorks2025
Sterownik wykrywa ukośnik w nazwie użytkownika i automatycznie używa NTLM. Nie jest wymagana dodatkowa konfiguracja na Linuksie ani macOS.
Uwierzytelnianie Kerberos
Uwierzytelnianie Kerberos w systemach Linux i macOS wykorzystuje pakiet krb5, wbudowany w sterownik. Nie ma zewnętrznych zależności bibliotek.
Prerequisites
Ważny plik konfiguracyjny Kerberos. Domyślna ścieżka to
/etc/krb5.conf:[libdefaults] default_realm = MYDOMAIN.COM dns_lookup_kdc = true [realms] MYDOMAIN.COM = { kdc = dc1.mydomain.com }Instancja programu SQL Server musi mieć zarejestrowaną nazwę główną usługi (SPN) (na przykład
MSSQLSvc/<server>.mydomain.com:1433).
Połącz się za pomocą pliku keytab
Określ ścieżkę pliku keytab oraz obszar Kerberos w parametry połączenia:
sqlserver://<user>@MYDOMAIN.COM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYDOMAIN.COM&krb5-keytabfile=/etc/<user>.keytab
Połącz się z pamięcią podręczną danych uwierzytelniających
Najpierw utwórz zgłoszenie:
kinit <user>@MYDOMAIN.COM
Następnie połącz się, używając zbuforowanego poświadczenia:
sqlserver://<user>@MYDOMAIN.COM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYDOMAIN.COM&krb5-credcachefile=/tmp/krb5cc_1000
Parametry Kerberosa
| Parameter | Domyślny | Description |
|---|---|---|
krb5-configfile |
/etc/krb5.conf |
Ścieżka do pliku konfiguracyjnego Kerberos. |
krb5-realm |
- | Obszar Kerberosa (na przykład MYDOMAIN.COM). |
krb5-keytabfile |
- | Ścieżka do pliku keytab. |
krb5-credcachefile |
- | Ścieżka do pliku pamięci podręcznej z poświadczeniami. |
krb5-dnslookupkdc |
true |
Użyj rekordów DNS SRV, aby znaleźć Centrum Dystrybucji Kluczy (KDC). |
krb5-udppreferencelimit |
1 |
Maksymalny rozmiar wiadomości UDP przed przejściem na TCP. |
Więcej informacji można znaleźć w sekcji SQL Server i Windows authentication.
Uwierzytelnianie systemu Windows (SSPI) nie jest dostępne
Na Linuksie i macOS uwierzytelnianie zintegrowane w Windows (SSPI / trusted_connection=yes) nie jest dostępne. Skorzystaj z jednej z następujących alternatyw:
| Method | Parametry połączenia |
|---|---|
| NTLM | sqlserver://DOMAIN%5Cuser:password@host?database=db |
| Kerberos (tabulator klawiszy) | 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 |
| Uwierzytelnianie SQL | sqlserver://user:password@host?database=db |
| Microsoft Entra ID |
sqlserver://host?database=db&fedauth=ActiveDirectoryDefault&encrypt=true&TrustServerCertificate=false (użyj sterownika azuresql) |
Konfiguracja certyfikatu
Na Linuksie i macOS certyfikaty TLS używane z parametrami certificate or serverCertificate muszą być plikami zakodowanymi przez PEM. Kierowca odczytuje je, korzystając bezpośrednio z pakietu crypto/tls Go.
Systemowy magazyn zaufanych certyfikatów
Sterownik korzysta z domyślnego magazynu certyfikatów systemu operacyjnego. W systemie Linux ten magazyn certyfikatów zaufania zazwyczaj znajduje się w /etc/ssl/certs/ lub /etc/pki/tls/certs/. W systemie macOS używany jest systemowy pęk kluczy.
Aby dodać niestandardowy certyfikat CA do magazynu systemowego:
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
Alternatywnie, można użyć parametru połączenia certificate , aby bezpośrednio określić certyfikat CA bez zmiany pamięci systemowej:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&certificate=/path/to/ca-cert.pem