Menyambungkan dari Linux atau macOS

Unduh driver ODBC

Artikel ini membahas cara membuat koneksi ke database SQL Server.

Properti Koneksi

Lihat Kata Kunci dan Atribut String DSN dan Koneksi ion untuk semua kata kunci dan atribut string koneksi yang didukung di Linux dan macOS.

Penting

Saat menyambungkan ke database yang menggunakan pencerminan database (memiliki mitra failover), jangan tentukan nama database di string koneksi. Sebagai gantinya, kirim perintah gunakandatabase_name untuk menyambungkan ke database sebelum menjalankan kueri Anda.

Nilai yang diteruskan ke kata kunci Driver bisa menjadi salah satu dari yang berikut ini:

  • Nama yang Anda gunakan saat menginstal driver.

  • Jalur ke pustaka driver, yang ditentukan dalam file .ini templat yang digunakan untuk menginstal driver.

DSN bersifat opsional. Anda dapat menggunakan DSN untuk menentukan kata kunci string koneksi dengan DSN nama yang kemudian dapat Anda referensikan di string koneksi. Untuk membuat DSN, buat (jika perlu) dan edit file ~/.odbc.ini (.odbc.ini di direktori beranda Anda) untuk DSN Pengguna yang hanya dapat diakses oleh pengguna saat ini, atau /etc/odbc.ini untuk DSN Sistem (hak istimewa administratif diperlukan.) Odbc.ini berikut adalah sampel yang menunjukkan entri minimal yang diperlukan untuk DSN:

# [DSN name]
[MSSQLTest]  
Driver = ODBC Driver 18 for SQL Server  
# Server = [protocol:]server[,port]  
Server = tcp:localhost,1433
Encrypt = yes
#
# Note:  
# Port isn't a valid keyword in the odbc.ini file  
# for the Microsoft ODBC driver on Linux or macOS
#  

Untuk menyambungkan menggunakan DSN di atas dalam string koneksi, Anda akan menentukan DSN kata kunci seperti:DSN=MSSQLTest;UID=my_username;PWD=my_password
string koneksi di atas akan setara dengan menentukan string koneksi tanpa DSN kata kunci seperti:Driver=ODBC Driver 18 for SQL Server;Server=tcp:localhost,1433;Encrypt=yes;UID=my_username;PWD=my_password

Anda dapat secara opsional menentukan protokol dan port untuk tersambung ke server. Misalnya, Server=tcp:servername,12345. Satu-satunya protokol yang didukung oleh driver Linux dan macOS adalah tcp.

Untuk menyambungkan ke instans bernama pada port statis, gunakan Server=servername,port_number. Koneksi ke port dinamis tidak didukung sebelum versi 17.4.

Atau, Anda dapat menambahkan informasi DSN ke file templat, dan menjalankan perintah berikut untuk menambahkannya ke ~/.odbc.ini :

odbcinst -i -s -f <template_file>

Untuk dokumentasi lengkap tentang file ini dan odbcinst, lihat dokumentasi unixODBC. Untuk entri dalam odbc.ini file khusus untuk Driver ODBC untuk SQL Server, lihat Kata Kunci dan Atribut String DSN dan Koneksi ion untuk yang didukung di Linux dan macOS.

Anda dapat memverifikasi bahwa driver Anda bekerja dengan menggunakan isql untuk menguji koneksi, atau Anda dapat menggunakan perintah ini:

bcp master.INFORMATION_SCHEMA.TABLES out OutFile.dat -S <server> -U <name> -P <password>

Menggunakan TLS/SSL

Anda dapat menggunakan Keamanan Lapisan Transportasi (TLS), yang sebelumnya dikenal sebagai Secure Sockets Layer (SSL), untuk mengenkripsi koneksi ke SQL Server. TLS melindungi nama pengguna dan kata sandi SQL Server melalui jaringan. TLS juga memverifikasi identitas server untuk melindungi dari serangan man-in-the-middle (MITM).

Mengaktifkan enkripsi meningkatkan keamanan dengan mengorbankan performa.

Untuk informasi selengkapnya, lihat Mengenkripsi Koneksi ke SQL Server dan Menggunakan Enkripsi Tanpa Validasi.

Terlepas dari pengaturan untuk Encrypt and TrustServerCertificate, kredensial login server (nama pengguna dan kata sandi) selalu dienkripsi. Tabel berikut ini memperlihatkan efek pengaturan Enkripsi dan TrustServerCertificate .

Driver ODBC 18 dan yang lebih baru

Pengaturan Enkripsi Sertifikat Server Kepercayaan Enkripsi Paksa Server Hasil
Tidak No Tidak Sertifikat server tidak diperiksa.
Data yang dikirim antara klien dan server tidak dienkripsi.
Tidak Ya Tidak Sertifikat server tidak diperiksa.
Data yang dikirim antara klien dan server tidak dienkripsi.
Ya No Tidak Sertifikat server dicentang.
Data yang dikirim antara klien dan server dienkripsi.
Ya Ya Tidak Sertifikat server tidak diperiksa.
Data yang dikirim antara klien dan server dienkripsi.
Tidak No Ya Sertifikat server dicentang.
Data yang dikirim antara klien dan server dienkripsi.
Tidak Ya Ya Sertifikat server tidak diperiksa.
Data yang dikirim antara klien dan server dienkripsi.
Ya No Ya Sertifikat server dicentang.
Data yang dikirim antara klien dan server dienkripsi.
Ya Ya Ya Sertifikat server tidak diperiksa.
Data yang dikirim antara klien dan server dienkripsi.
Ketat - - TrustServerCertificate diabaikan. Sertifikat server dicentang.
Data yang dikirim antara klien dan server dienkripsi.

Catatan

Ketat hanya tersedia terhadap server yang mendukung koneksi TDS 8.0.

Driver ODBC 17 dan yang lebih lama

Pengaturan Enkripsi Sertifikat Server Kepercayaan Enkripsi Paksa Server Hasil
Tidak No Tidak Sertifikat server tidak diperiksa.
Data yang dikirim antara klien dan server tidak dienkripsi.
Tidak Ya Tidak Sertifikat server tidak diperiksa.
Data yang dikirim antara klien dan server tidak dienkripsi.
Ya No Tidak Sertifikat server dicentang.
Data yang dikirim antara klien dan server dienkripsi.
Ya Ya Tidak Sertifikat server tidak diperiksa.
Data yang dikirim antara klien dan server dienkripsi.
Tidak No Ya Sertifikat server tidak diperiksa.
Data yang dikirim antara klien dan server dienkripsi.
Tidak Ya Ya Sertifikat server tidak diperiksa.
Data yang dikirim antara klien dan server dienkripsi.
Ya No Ya Sertifikat server dicentang.
Data yang dikirim antara klien dan server dienkripsi.
Ya Ya Ya Sertifikat server tidak diperiksa.
Data yang dikirim antara klien dan server dienkripsi.

Saat menggunakan enkripsi koneksi, nama (atau alamat IP) dalam Nama Umum Subjek (CN) atau Nama Alternatif Subjek (SAN) dalam sertifikat TLS/SSL SQL Server harus sama persis dengan nama server (atau alamat IP) yang ditentukan dalam string koneksi. Kata HostnameInCertificate kunci (v18.0+) dapat digunakan untuk menentukan nama alternatif yang digunakan untuk mencocokkan dengan nama dalam sertifikat TLS/SSL. Ketika kata kunci ditentukan, sertifikat SQL Server TLS/SSL harus cocok dengan salah satu nama server, atau HostnameInCertificate.

Secara default, koneksi terenkripsi selalu memverifikasi sertifikat server. Namun, jika Anda tersambung ke server yang memiliki sertifikat yang ditandatangani sendiri, dan tidak menggunakan mode enkripsi yang ketat, Anda dapat menambahkan TrustServerCertificate opsi untuk melewati pemeriksaan sertifikat terhadap daftar otoritas sertifikat tepercaya:

Driver={ODBC Driver 18 for SQL Server};Server=ServerNameHere;Encrypt=YES;TrustServerCertificate=YES  

Dalam mode enkripsi yang ketat, sertifikat selalu diverifikasi. Sebagai opsi untuk validasi sertifikat standar, ServerCertificate kata kunci (v18.1+) dapat digunakan untuk menentukan jalur ke file sertifikat yang cocok dengan sertifikat SQL Server. Opsi ini hanya tersedia saat menggunakan enkripsi ketat. Format sertifikat yang diterima adalah PEM, DER, dan CER. Jika ditentukan, sertifikat SQL Server diperiksa dengan melihat apakah yang ServerCertificate disediakan sama persis.

TLS di Linux dan macOS menggunakan pustaka OpenSSL. Tabel berikut menunjukkan versi OpenSSL minimum yang didukung dan lokasi Penyimpanan Kepercayaan Sertifikat default untuk setiap platform:

Platform Versi OpenSSL Minimum Lokasi Penyimpanan Kepercayaan Sertifikat Default
Debian 10, 11, 12 1.1.1 /etc/ssl/certs
Debian 9 1.1.0 /etc/ssl/certs
Debian 8.71 1.0.1 /etc/ssl/certs
OS X 10.11, macOS 1.0.2 /usr/local/etc/openssl/certs
Red Hat Enterprise Linux 9+ 3.0.1 /etc/pki/tls/cert.pem
Red Hat Enterprise Linux 8 1.1.1 /etc/pki/tls/cert.pem
Red Hat Enterprise Linux 7 1.0.1 /etc/pki/tls/cert.pem
Red Hat Enterprise Linux 6 1.0.0-10 /etc/pki/tls/cert.pem
SUSE Linux Enterprise 15 1.1.0 /etc/ssl/certs
SUSE Linux Enterprise 11, 12 1.0.1 /etc/ssl/certs
Ubuntu 22.04, 23.04 3.0.2 /etc/ssl/certs
Ubuntu 20.04 1.1.1 /etc/ssl/certs
Ubuntu 18.04 1.1.0 /etc/ssl/certs
Ubuntu 16.04 1.0.2 /etc/ssl/certs
Ubuntu 14.04 1.0.1 /etc/ssl/certs
Alpine 3.17, 3.18 3.0.1 /etc/ssl/certs

Anda juga dapat menentukan enkripsi di string koneksi menggunakan Encrypt opsi saat menggunakan SQLDriver Koneksi untuk menyambungkan.

Menyesuaikan Pengaturan TCP Keep-Alive

Dimulai dengan Odbc Driver 17.4, seberapa sering driver mengirim paket tetap hidup dan mengirimkannya kembali ketika respons tidak diterima dapat dikonfigurasi. Untuk mengonfigurasi, tambahkan pengaturan berikut ke bagian driver di odbcinst.ini, atau bagian DSN di odbc.ini. Saat menyambungkan dengan DSN, driver akan menggunakan pengaturan di bagian DSN jika ada; jika tidak, atau jika terhubung dengan string koneksi saja, itu akan menggunakan pengaturan di bagian driver di odbcinst.ini. Jika pengaturan tidak ada di salah satu lokasi, driver menggunakan nilai default. Dimulai dengan Odbc Driver 17.8, KeepAlive dan KeepAliveInterval kata kunci dapat ditentukan dalam string koneksi.

  • KeepAlive=<integer> mengontrol seberapa sering TCP mencoba memverifikasi bahwa koneksi diam masih utuh dengan mengirim paket tetap hidup. Defaultnya adalah 30 detik.

  • KeepAliveInterval=<integer> menentukan interval yang memisahkan transmisi ulang tetap aktif hingga respons diterima. Defaultnya adalah 1 detik.

Lihat Juga