Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sürücü, go-mssqldb SQL Server kimlik doğrulaması, Windows entegre kimlik doğrulama (SSPI), NTLM ve Kerberos'u destekler. Bu makale, her yöntemi bağlantı dizesi örnekleri ve kod örnekleriyle ele almaktadır.
Microsoft Entra ID kimlik doğrulaması hakkında bilgi için bkz. Microsoft Entra ID kimlik doğrulaması.
Kimlik doğrulama yöntemi seçme
Çevrenize ve kimlik platformunuza en uygun en güçlü yöntemi kullanın:
| Bu sırayı tercih ederim | Method | Şu durumlarda kullanın: |
|---|---|---|
| 1 | Microsoft Entra Kimliği | Azure SQL'e bağlanıyorsunuz ve şifre kaydetmeden yönetilen kimlik, iş yükü kimliği veya başka bir Entra akışı kullanabiliyorsunuz. |
| 2 | Windows entegre kimlik doğrulama (SSPI) | Uygulamanız Windows'ta çalışıyor ve mevcut Windows kimliğini doğrudan kullanabilir. |
| 3 | Kerberos | Linux veya macOS kullanıyorsun ve zaten Kerberos biletleri, keytab'lar veya yönetilen bir alan alanı ortamın var. |
| 4 | NTLM | Alan kimliğine ihtiyacınız var ama Kerberos mevcut değil ve pratik değil. |
| 5 | SQL Server kimlik doğrulaması | Entegre bir kimlik seçeneğiniz yok ve SQL giriş ve şifre kullanmak zorundasınız. |
Birden fazla yöntem işe yarıyorsa, uzun ömürlü sırlardan kaçınan ve ana platformun yerel kimlik sistemiyle eşleşen olanı tercih edin.
SQL Server kimlik doğrulaması
SQL Server doğrulaması, SQL Server'da saklanan bir giriş adı ve şifre kullanır.
user id ve password parametrelerini belirtin:
URL biçimi
Note
URL bağlantı dizelerinde, kullanıcı adı veya paroladaki özel karakterlere yüzde kodlaması uygulayın. Windows kimlik doğrulama kullanıcı adları, etki alanı ayırıcısı olarak %5C kullanır; örneğin sqlserver://DOMAIN%5Cusername:password@host. ADO ve ODBC bağlantı dizilerinde literal DOMAIN\username biçim kullanılır.
URL'de kullanıcı adını ve şifreyi belirtin:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true
ADO formatı
ADO tarzı bir bağlantı dizesi'te user id ve password tuşlarını kullanın:
server=<server>;user id=<user>;password=<password>;database=AdventureWorks2025;Encrypt=true
Kod örneği
SQL Server doğrulama ile bağlanın ve bağlantıyı doğrulayın:
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 entegre kimlik doğrulama (SSPI)
Windows'ta sürücü, mevcut Windows kullanıcısının kimlik bilgilerini kullanarak doğrulama yapmak için SSPI (Güvenlik Destek Sağlayıcı Arayüzü) kullanır. Bağlantı dizesi, kullanıcı adı veya parola gerektirmez.
sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes&encrypt=true
Note
SSPI ile Windows entegre kimlik doğrulaması yalnızca Go uygulaması Windows'ta çalıştığında ve mevcut kullanıcı SQL Server örneğine erişebildiğinde çalışır.
NTLM kimlik doğrulaması
NTLM doğrulaması tüm platformlarda (Windows, Linux ve macOS) çalışır. Alan adı nitelikli bir kullanıcı adı ve şifre verin:
NTLM URL formatı
DOMAIN\<user> içindeki ters eğik çizgiyi %5C olarak URL kodlayın:
sqlserver://DOMAIN%5C<user>:<password>@<server>?database=AdventureWorks2025&encrypt=true
Note
URL biçiminde, DOMAIN\<user> içindeki ters eğik çizgiyi %5C olarak URL kodlamalısınız.
NTLM ADO formatı
Kullanıcı adındaki ters eğik çizgi, sürücüye NTLM doğrulamasını işaret eder:
server=<server>;user id=DOMAIN\<user>;password=<password>;database=AdventureWorks2025;Encrypt=true
Sürücü, kullanıcı adındaki ters çizgiyi algılar ve otomatik olarak NTLM kullanır.
Kerberos kimlik doğrulama
Kerberos doğrulaması, sistem geçerli bir Kerberos yapılandırmasına sahip olduğunda Linux ve macOS'ta çalışır. Sürücü, paketi krb5 Kerberos kimlik doğrulaması için kullanır. Kimlik bilgilerini sağlamanın üç yolu vardır.
Prerequisites
- Geçerli
krb5.confbir dosya (varsayılan yol:/etc/krb5.conf). - SQL Server'ın kayıtlı bir Hizmet Ana Adı (SPN) olması gerekir.
Yöntem 1: Keytab dosyası
Bir keytab dosyası, şifrelenmiş Kerberos ana anahtarlarını içerir. Keytab dosya yolunu ve kullanıcının alemini belirtin:
sqlserver://<user>@MYREALM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&krb5-keytabfile=/path/to/user.keytab&encrypt=true
Yöntem 2: Kimlik Kaydı Önbelleği
kinit tarafından oluşturulmuş mevcut bir Kerberos kimlik bilgisi önbelleğini kullanın.
sqlserver://<user>@MYREALM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&krb5-credcachefile=/tmp/krb5cc_1000&encrypt=true
Yöntem 3: Ham kimlik bilgileri
Şifreyi doğrudan bağlantı dizesi'e girin. Sürücü, Kerberos kimlik doğrulama değişimini gerçekleştirmek için verilen kimlik bilgilerini kullanır.
sqlserver://<user>@MYREALM:<password>@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&encrypt=true
Kerberos parametreleri
| Parametre | Default | Description |
|---|---|---|
krb5-configfile |
/etc/krb5.conf |
Kerberos yapılandırma dosyasına giden yol. |
krb5-realm |
- | Kerberos alem adı, örneğin MYDOMAIN.COM. |
krb5-keytabfile |
- | Keytab dosyasına giden yol. |
krb5-credcachefile |
- | Kimlik bilgisi önbellek dosyasına giden yol. |
krb5-dnslookupkdc |
true |
KDC'yi bulmak için DNS SRV kayıtlarını kullanın. |
krb5-udppreferencelimit |
1 |
UDP'den TCP'ye geçmeden önce maksimum mesaj boyutu. |
ServerSPN |
- | Otomatik olarak oluşturulan SPN'yi geçersiz kılın. |