Csatlakozás Linuxról vagy macOS-ről

ODBC-illesztőprogram letöltése

Ez a cikk azt ismerteti, hogyan hozhat létre kapcsolatot egy SQL Server-adatbázissal.

Kapcsolat tulajdonságai

Tekintse meg a DSN és a Linuxon és macOS-en támogatott kapcsolati sztring kulcsszavait és attribútumait.

Fontos

Ha adatbázis-tükrözést használó adatbázishoz csatlakozik (feladatátvételi partnerrel rendelkezik), ne adja meg az adatbázis nevét a kapcsolati sztringben. Ehelyett küldjön egy database_name parancsot az adatbázishoz való csatlakozáshoz a lekérdezések végrehajtása előtt.

Az illesztőprogram kulcsszónak átadott érték az alábbiak egyike lehet:

  • Az illesztőprogram telepítésekor használt név.

  • Az illesztőprogram-kódtár elérési útja, amely a sablonban .ini illesztőprogram telepítéséhez használt fájlban van megadva.

A DSN-k megadása nem kötelező. A DSN használatával definiálhat kapcsolati sztringszavakat egy DSN olyan név alatt, amelyet aztán hivatkozhat a kapcsolati sztringben. DSN létrehozásához hozza létre (ha szükséges) és szerkessze a ~/.odbc.ini fájlt (.odbc.ini a kezdőkönyvtárban) egy olyan felhasználói DSN-hez, amely csak az aktuális felhasználó számára érhető el, vagy /etc/odbc.ini egy rendszerszintű DSN-hez (rendszergazdai jogosultság szükséges.) A következő odbc.ini egy minta, amely a DSN minimálisan szükséges bejegyzéseit jeleníti meg:

# [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
#  

Ha a fenti DSN használatával szeretne csatlakozni egy kapcsolati sztringben, a következő kulcsszót DSN kell megadnia: DSN=MSSQLTest;UID=my_username;PWD=<password>
A fenti kapcsolati sztring a következő kulcsszó nélküli DSN kapcsolati sztring megadásának felel meg: Driver=ODBC Driver 18 for SQL Server;Server=tcp:localhost,1433;Encrypt=yes;UID=my_username;PWD=<password>

Megadhatja a kiszolgálóhoz való csatlakozáshoz szükséges protokollt és portot. Például: Server=tcp:servername,12345. A Linux és a macOS illesztőprogramok tcpcsak a protokollt támogatják.

Ha statikus porton lévő elnevezett példányhoz szeretne csatlakozni, használja a Server=servername,port_number parancsot. A dinamikus porthoz való csatlakozás a 17.4-es verzió előtt nem támogatott.

Alternatív megoldásként hozzáadhatja a DSN-adatokat egy sablonfájlhoz, és végrehajthatja a következő parancsot, hogy hozzáadja a következőhöz ~/.odbc.ini :

odbcinst -i -s -f <template_file>

Az ini fájlok teljes dokumentációját a odbcinstunixODBC dokumentációjában találja. Az SQL Server ODBC-illesztőprogramjára vonatkozó fájl bejegyzéseit odbc.ini a Linuxon és macOS-en támogatottak DSN- és kapcsolati sztringszavai és attribútumai című témakörben találhatja meg.

Ellenőrizheti, hogy az illesztőprogram működik-e isql a kapcsolat tesztelésével, vagy használhatja ezt a parancsot:

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

TLS/SSL használata

A Transport Layer Security (TLS), korábbi nevén Secure Sockets Layer (SSL) használatával titkosíthatja az SQL Server-kapcsolatokat. A TLS védi az SQL Server-felhasználóneveket és -jelszavakat a hálózaton keresztül. A TLS a kiszolgáló identitását is ellenőrzi a középen belüli (MITM) támadások elleni védelem érdekében.

A titkosítás engedélyezése növeli a biztonságot a teljesítmény rovására.

További információ: Az SQL Server-kapcsolatok titkosítása és a titkosítás érvényesítése nélküli használata.

A Titkosítás és a TrustServerCertificate beállításaitól függetlenül a kiszolgáló bejelentkezési hitelesítő adatai (felhasználónév és jelszó) mindig titkosítva vannak. Az alábbi táblázatok a Titkosítás és a TrustServerCertificate beállítások hatását mutatják be.

ODBC Driver 18 és újabb

Titkosítási beállítás Megbízhatósági kiszolgáló tanúsítványa Kiszolgáló kényszerítő titkosítása Result
Nem Nem Nem A kiszolgálótanúsítvány nincs bejelölve.
Az ügyfél és a kiszolgáló között küldött adatok nincsenek titkosítva.
Nem Igen Nem A kiszolgálótanúsítvány nincs bejelölve.
Az ügyfél és a kiszolgáló között küldött adatok nincsenek titkosítva.
Igen Nem Nem A kiszolgálótanúsítvány be van jelölve.
Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek.
Igen Igen Nem A kiszolgálótanúsítvány nincs bejelölve.
Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek.
Nem Nem Igen A kiszolgálótanúsítvány be van jelölve.
Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek.
Nem Igen Igen A kiszolgálótanúsítvány nincs bejelölve.
Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek.
Igen Nem Igen A kiszolgálótanúsítvány be van jelölve.
Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek.
Igen Igen Igen A kiszolgálótanúsítvány nincs bejelölve.
Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek.
Szigorú - - A TrustServerCertificate figyelmen kívül lesz hagyva. A kiszolgálótanúsítvány be van jelölve.
Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek.

Megjegyzés:

Szigorú csak a TDS 8.0-kapcsolatokat támogató kiszolgálókon érhető el.

ODBC Driver 17 és újabb

Titkosítási beállítás Megbízhatósági kiszolgáló tanúsítványa Kiszolgáló kényszerítő titkosítása Result
Nem Nem Nem A kiszolgálótanúsítvány nincs bejelölve.
Az ügyfél és a kiszolgáló között küldött adatok nincsenek titkosítva.
Nem Igen Nem A kiszolgálótanúsítvány nincs bejelölve.
Az ügyfél és a kiszolgáló között küldött adatok nincsenek titkosítva.
Igen Nem Nem A kiszolgálótanúsítvány be van jelölve.
Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek.
Igen Igen Nem A kiszolgálótanúsítvány nincs bejelölve.
Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek.
Nem Nem Igen A kiszolgálótanúsítvány nincs bejelölve.
Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek.
Nem Igen Igen A kiszolgálótanúsítvány nincs bejelölve.
Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek.
Igen Nem Igen A kiszolgálótanúsítvány be van jelölve.
Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek.
Igen Igen Igen A kiszolgálótanúsítvány nincs bejelölve.
Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek.

Kapcsolattitkosítás használatakor az SQL Server TLS/SSL-tanúsítványban szereplő közönséges név (CN) vagy alternatív tárgy neve (SAN) pontosan meg kell egyeznie a kapcsolati sztringben megadott kiszolgálónévvel vagy IP-címmel. A HostnameInCertificate kulcsszó (v18.0+) a TLS/SSL-tanúsítványban szereplő neveknek megfelelő alternatív név megadására használható. A kulcsszó megadásakor az SQL Server TLS/SSL-tanúsítványának meg kell egyeznie vagy a kiszolgáló nevével, vagy a HostnameInCertificate.

Alapértelmezés szerint a titkosított kapcsolatok mindig ellenőrzik a kiszolgáló tanúsítványát. Ha azonban önaláírt tanúsítvánnyal rendelkező kiszolgálóhoz csatlakozik, és nem használ szigorú titkosítási módot, hozzáadhatja azt a TrustServerCertificate lehetőséget, hogy megkerülje a tanúsítvány megbízható hitelesítésszolgáltatók listájára való ellenőrzését:

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

Szigorú titkosítási módban a rendszer mindig ellenőrzi a tanúsítványt. A szabványos tanúsítványérvényesítés lehetőségeként a ServerCertificate kulcsszó (v18.1+) segítségével megadhatja egy tanúsítványfájl elérési útját, amely megfelel az SQL Server-tanúsítványnak. Ez a beállítás csak szigorú titkosítás esetén érhető el. Az elfogadott tanúsítványformátumok a PEM, a DER és a CER. Ha meg van adva, a rendszer ellenőrzi az SQL Server-tanúsítványt, és ellenőrzi, hogy a ServerCertificate megadott egyezés pontos-e.

A Linuxon és macOS-en futó TLS az OpenSSL-kódtárat használja. Az alábbi táblázat az OpenSSL minimálisan támogatott verzióit és az egyes platformok alapértelmezett tanúsítványmegbízhatósági tárolóhelyeit mutatja be:

Plattform Az OpenSSL minimális verziója A tanúsítványmegbízhatósági tároló alapértelmezett helye
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

A kapcsolati sztringben a Encrypt opció megadásával is titkosítást beállíthat, ha az SQLDriverConnect használatával csatlakozik.

A TCP Keep-Alive beállításainak módosítása

Az ODBC Driver 17.4-től kezdődően az illesztőprogram milyen gyakran küldi el az életben maradó csomagokat, és küldi újra azokat, ha a válasz nem érkezik meg, konfigurálható. A konfiguráláshoz adja hozzá a következő beállításokat az illesztőprogram szakaszához odbcinst.ini, és/vagy a DSN szakaszához odbc.ini. Ha DSN-hez csatlakozik, az illesztőprogram a DSN szakaszában megadott beállításokat fogja használni, ha van ilyen; ellenkező esetben, vagy ha csak kapcsolati sztringgel csatlakozik, akkor az illesztőprogram szakaszában odbcinst.initalálható beállításokat fogja használni. Ha a beállítás egyik helyen sem található, az illesztőprogram az alapértelmezett értéket használja. Az ODBC Driver 17.8-tól kezdődően KeepAliveKeepAliveInterval a kapcsolati sztringben kulcsszavak is megadhatók.

  • KeepAlive=<integer> Azt szabályozza, hogy a TCP milyen gyakran kísérli meg ellenőrizni, hogy az inaktív kapcsolat még mindig érintetlen-e egy megtartott csomag küldésével. Az alapértelmezett érték 30 másodperc.

  • KeepAliveInterval=<integer> meghatározza a keep-alive újraküldések közötti időközt, amíg a válasz meg nem érkezik. Az alapértelmezett érték 1 másodperc.

Lásd még: