Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Driver mendukung go-mssqldb autentikasi SQL Server, autentikasi terintegrasi Windows (SSPI), NTLM, dan Kerberos. Artikel ini membahas setiap metode dengan contoh string koneksi dan sampel kode.
Untuk autentikasi Microsoft Entra ID, lihat autentikasi Microsoft Entra ID.
Pilih metode autentikasi
Gunakan metode terkuat yang sesuai dengan lingkungan dan platform identitas Anda:
| Lebih suka pesanan ini | Metode | Gunakan saat |
|---|---|---|
| 1 | Microsoft Entra ID | Anda tersambung ke Azure SQL dan dapat menggunakan identitas terkelola, identitas beban kerja, atau alur Entra lainnya tanpa menyimpan kata sandi. |
| 2 | Autentikasi terintegrasi Windows (SSPI) | Aplikasi Anda berjalan di Windows dan dapat menggunakan identitas Windows saat ini secara langsung. |
| 3 | Kerberos | Anda menggunakan Linux atau macOS dan sudah memiliki tiket Kerberos, keytab, atau lingkungan domain terkelola. |
| 4 | MNTL | Anda memerlukan autentikasi domain tetapi Kerberos tidak tersedia atau praktis. |
| 5 | autentikasi SQL Server | Anda tidak memiliki opsi identitas terintegrasi dan harus menggunakan login dan kata sandi SQL. |
Jika lebih dari satu metode berhasil, pilih metode yang menghindari rahasia berumur panjang dan cocok dengan sistem identitas asli platform host.
autentikasi SQL Server
Autentikasi SQL Server menggunakan nama login dan kata sandi yang disimpan di SQL Server. Berikan parameter user id dan password :
Format URL
Note
Untuk string koneksi URL, kodekan karakter khusus secara persen dalam nama pengguna atau sandi. Nama pengguna Windows authentication digunakan %5C untuk pemisah domain, seperti sqlserver://DOMAIN%5Cusername:password@host. Dalam string koneksi ADO dan ODBC, gunakan bentuk literal DOMAIN\username .
Tentukan nama pengguna dan kata sandi di URL:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true
Format ADO
Gunakan tombol user id dan password dalam string koneksi bergaya ADO:
server=<server>;user id=<user>;password=<password>;database=AdventureWorks2025;Encrypt=true
Contoh kode
Hubungkan dengan autentikasi SQL Server dan verifikasi koneksi:
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)
}
}
Autentikasi terintegrasi Windows (SSPI)
Di Windows, driver menggunakan SSPI (Security Support Provider Interface) untuk mengautentikasi dengan menggunakan kredensial pengguna Windows saat ini. string koneksi tidak memerlukan nama pengguna atau kata sandi.
sqlserver://<server>?database=AdventureWorks2025&trusted_connection=yes&encrypt=true
Note
Autentikasi terintegrasi Windows melalui SSPI hanya berfungsi ketika aplikasi Go berjalan di Windows dan pengguna saat ini memiliki akses ke instans SQL Server.
Otentikasi NTLM
Autentikasi NTLM berfungsi di semua platform (Windows, Linux, dan macOS). Berikan nama pengguna dan sandi yang memenuhi syarat domain:
Format URL NTLM
Kodekan URL untuk backslash di DOMAIN\<user> sebagai %5C:
sqlserver://DOMAIN%5C<user>:<password>@<server>?database=AdventureWorks2025&encrypt=true
Note
Dalam format URL, Anda harus mengodekan garis miring terbalik dalam DOMAIN\<user> sebagai %5C.
Format NTLM ADO
Garis miring terbalik dalam nama pengguna menandakan autentikasi NTLM bagi driver:
server=<server>;user id=DOMAIN\<user>;password=<password>;database=AdventureWorks2025;Encrypt=true
Driver mendeteksi karakter backslash (\) dalam nama pengguna dan secara otomatis menggunakan NTLM.
Autentikasi Kerberos
Autentikasi Kerberos berfungsi di Linux dan macOS saat sistem memiliki konfigurasi Kerberos yang valid. Driver menggunakan paket krb5 untuk autentikasi Kerberos. Ada tiga metode untuk memberikan kredensial.
Prasyarat
- Berkas
krb5.confyang valid (jalur bawaan:/etc/krb5.conf). - SQL Server harus memiliki Nama Prinsipal Layanan (SPN) terdaftar.
Metode 1: Berkas keytab
File keytab berisi kunci utama Kerberos terenkripsi. Tentukan jalur file keytab dan ranah pengguna:
sqlserver://<user>@MYREALM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&krb5-keytabfile=/path/to/user.keytab&encrypt=true
Metode 2: Cache kredensial
Gunakan cache kredensial Kerberos yang ada yang dibuat oleh kinit.
sqlserver://<user>@MYREALM@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&krb5-credcachefile=/tmp/krb5cc_1000&encrypt=true
Metode 3: Kredensial mentah
Berikan kata sandi langsung di string koneksi. Driver menggunakan kredensial yang disediakan untuk melakukan pertukaran autentikasi Kerberos.
sqlserver://<user>@MYREALM:<password>@<server>:1433?database=AdventureWorks2025&krb5-realm=MYREALM&encrypt=true
Parameter Kerberos
| Parameter | Default | Description |
|---|---|---|
krb5-configfile |
/etc/krb5.conf |
Jalur ke file konfigurasi Kerberos. |
krb5-realm |
- | Nama alam Kerberos, seperti MYDOMAIN.COM. |
krb5-keytabfile |
- | Jalur ke file keytab. |
krb5-credcachefile |
- | Jalur ke file cache kredensial. |
krb5-dnslookupkdc |
true |
Gunakan catatan DNS SRV untuk menemukan KDC. |
krb5-udppreferencelimit |
1 |
Ukuran pesan maksimum sebelum beralih dari UDP ke TCP. |
ServerSPN |
- | Ganti SPN yang dibuat secara otomatis. |