SQL Server auf Linux installieren und verwenden

Vor gut einem Jahr hat Microsoft angekündigt, dass es eine SQL Server Version auch für Linux geben wird. In dem Jahr, das seit dem vergangen ist wurde kräftig an dieser Version gearbeitet und inzwischen ist der SQL Server für Linux auch als CTP verfügbar. Bei der Version für Linux handelt es sich nicht um einen SQL Server 2016 sondern es ist bereits die nächste Version des SQL Servers die sowohl für Windows wie auch für Linux erscheinen wird. Einen sehr guten Artikel wie SQL Server für Linux entwickelt wurde und wie es Microsoft geschafft hat den SQL Server auf Linux laufen zu lassen findet man hier.

Dieser Blog Beitrag soll mehr dazu dienen zu klären wie man den SQL Server unter Linux installieren und verwenden kann, so dass sich jeder eine Test-Umgebung unter Linux aufbauen kann. Ich werde die Umgebung unter Azure aufbauen da man hier sehr leicht ein Linux System erstellen kann. Dazu erstelle ich mir einen Ubuntu Server in der Version 16.04 LTS.

Es ist wichtig genau diese Version zu verwenden, weil SQL auf Linux genau für diese Version unterstützt wird. SQL Server für Linux ist auch für RedHat Enterprise Linux 7.2 oder SUSE Linux Enterprise Server (SLES) v12 SP2 erhältlich. Diese Versionen sollte man aber für eine Teststellung nicht verwenden, da die Enterprise Version zusätzliche Lizenzkosten verursachen die auf die Bereitstellung der virtuellen Maschine oben drauf kommen.

Ich konfiguriere die virtuelle Maschine wie im Screenshot zu sehen ist. Als Authentifizierungstyp wähle ich die Authentifizierungsmethode „Kennwort“, das ist in unserem einfachen Beispiel einfacher als der öffentliche SSH Schlüssel.

Auf der nächsten Dialogseite wähle ich eine D1_V2 Standard VM aus. Man benötigt mindestens 3.25 GB Speicher um SQL Server für Linux zu installieren, daher kommt die A1 Standard VM nicht in Frage.

Die Einstellungen auf der nächsten Seite lasse ich so, wie sie sind – für unser Testsystem sind sie völlig ausreichend.

Auf der nächsten Dialogseite können wir die Konfiguration die wir bisher eingerichtet haben noch einmal überprüfen und dann auf OK klicken um die Linux VM zu erstellen.

Nachdem die Linux VM instanziiert wurde können wir uns nun mit dem Server verbinden und die eigentliche SQL on Linux Installation starten. Die Remote-Steuerung eines Linux Servers funktioniert etwas anders als unter Windows. Unter Windows können wir uns per RDP-Verbindung auf den Server schalten. Einen Linux Server kann man remote über SSH (Secure Shell) verwalten. Ein sehr beliebter SSH-Client stellt PuTTY dar, den man hier herunterladen kann.

Hat man PuTTY heruntergeladen kann man nun eine Verbindung zum Ubuntu Server aufbauen. Hierzu wird PuTTY gestartet. Im Fenster gibt man dann entweder die IP-Adresse oder den DNS-Namen des neuen Ubuntu Servers an. Ich habe dem Server, der ja ohnehin nur ein kleiner Test sein soll, keinen DNS-Namen gegeben, daher muss ich mit der IP-Adresse arbeiten.

Durch einen Klick auf Open stelle ich die Verbindung zum Server her. Wenn man dies zum ersten Mal macht wird die folgende Meldung angezeigt:

Das bedeutet, dass der Host Key des neuen Servers, der bei der Installation erzeugt wurde, noch nicht in der Registry des Clients gespeichert wurde. Mit Hilfe dieser Methode kann man einen Linux Server eindeutig identifizieren. Hat man den Key gespeichert und kommt diese Meldung bei der erneuten Verbindung mit dem Server noch einmal weiß man, dass es sich nicht mehr um den eigentlichen Server handelt sondern um einen anderen. Bei einem neuen Server ist diese Meldung normal und wir können sie mit „Ja“ bestätigen.

Nun wird ein Konsolenfenster geöffnet und wir können uns dort mit dem oben eingestellten Administratoren-Konto und Kennwort auf den Linux Server verbinden.

Um nun einen SQL Server zu installieren müssen wir wie folgt vorgehen. Als erstes muss der GPG Schlüssel (GNU Privacy Guard) von Microsoft importiert werden. Hierzu wird der folgende Befehl unter Ubuntu verwendet:

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

Danach können müssen wir das Installations-Repository mit dem folgenden Befehl registrieren.

curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list | sudo tee /etc/apt/sources.list.d/mssql-server.list

Nun können wir den SQL Server installieren. Um Linux-Administratoren eine möglichst konsistente Installations-Erfahrung zu geben wird der SQL Server für Linux auf allen Plattformen mit den entsprechenden plattformabhängigen Installationsbefehlen installiert. Unter Ubuntu ist dies der Befehl apt-get. Dieser Befehl muss mit root-Berechtigungen ausgeführt werden, daher müssen wir zusätzlich den Befehl sudo verwenden. Bevor wir die eigentliche Installation starten können müssen wir mit dem folgenden Befehl die Paketliste aktualisieren:

sudo apt-get update

Nun können wir die eigentliche Installation des SQL Servers über den folgenden Befehl starten:

sudo apt-get install -y mssql-server

Wurde die Installation korrekt beendet, so wird die folgende Meldung angezeigt:

Der frisch installierte SQL Server muss nun noch konfiguriert werden. Dies geschieht, wie oben im Screenshot zu sehen ist mit dem folgenden Befehl:

sudo /opt/mssql/bin/mssql-conf setup

Zur Konfiguration des SQL Servers müssen nur zwei Informationen angegeben werden. Zum einen muss man die Lizenzvereinbarung mit Microsoft bestätigen, zum anderen muss man ein Kennwort für den Systemadministrator eingeben.

Nach diesen Schritten ist der SQL Server soweit installiert und wird auf dem Linux-Server ausgeführt. Um dies  noch einmal genau zu überprüfen ob der SQL Server auch wirklich ausgeführt wird kann man den folgenden Befehl verwenden

systemctl status mssql-server

Wir haben nun einen SQL Server am Start, mit dem wir aber bisher noch nicht so richtig arbeiten können, da auf der einen Seite keine Tools auf dem SQL Server selbst installiert sind und wir auf der anderen Seite auch noch nicht remote zurgreifen können, da die Firewall noch nicht offen ist.

Als erste Aktion werden wir nun die Linux Tools für SQL Server installieren. Hierbei handelt es sich natürlich nicht Tools mit einer Benutzeroberfläche oder so etwas sondern um Kommandozeilen-Tools, vergleichbar mit sqlcmd für die Windows Version vom SQL Server.

Hierzu müssen wir zunächst wieder die GPG Schlüssel mit dem folgenden Befehl importieren

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

Dann wird die Paketliste mit dem folgenden Befehl aktualisiert

curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list

Nun müssen wir die Installationsliste wieder aktualisieren

sudo apt-get update

Installiert werden die Tools mit dem folgenden Befehl. Hierbei werden sowohl die mssql-tools als auch der ODBC-Treiber installiert.

sudo apt-get install mssql-tools unixodbc-dev

Im Gegensatz zu der eigentlichen SQL Server Installation muss man die Lizenzbedingungen beiden Produkte in einer grafischen Benutzeroberfläche bestätigen. Hier ist der Dialog für die SQL Server Tools

und hier ist der Dialog für den ODBC Treiber

Nachdem diese Dialoge bestätigt wurden, werden die Tools auf dem Linux Server installiert.

Nun können wir uns unter Linux mit dem SQL Server verbinden. Hierzu müssen wir den Befehl sqlcmd starten

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA

Nach der Eingabe des oben vergebenen Kennworts können wir nun Befehle gegen den SQL Server absetzen.

Im Beispiel lesen wir die Server-Version mit Hilfe des folgenden Befehls aus:

SELECT @@VERSION
GO

Nun zeige ich noch wie man den SQL Server über die Firewall so öffnen kann, dass man mit einem SQL Server Management Studio, das auf einem Windows PC läuft zugreifen kann. Hierzu müssen wir zwei Firewalls auf Port 1433 öffnen. Zum einen ist das die Firewall auf dem Ubuntu-Linux, zum anderen ist das die Azure Firewall über die Network Security Group.

Um die Firewall auf dem Linux-Server zu aktivieren benötigen wir den Befehl

sudo ufw enable

Den Status der Firewall können wir mit dem folgenden Befehl überprüfen:

sudo ufw status

Nun müssen wir noch die entsprechenden Regeln einrichten. Da wir die Firewall neu aktiviert haben müssen wir neben der Regel für SQL Server auch noch eine Regel für SSH einrichten. Wenn wir das vergessen können wir uns nach dem Abmelden vom Server nicht mehr an diesem anmelden. Um SSH zu aktivieren nutzen wir den folgenden Befehl:

sudo ufw allow 22

Das Selbe müssen wir auch noch für den Port 1433 (SQL Server) machen.

sudo ufw allow 1433

Port 1433 muss nun auch noch unter Azure freigegeben werden. Dazu melden wir uns im Azure Portal an und wechseln zum Linux-Server. Dort wählen wir dann die Netzwerksicherheitsgruppe für die Netzwerkkarte aus.

In der Netzwerksicherheitsgruppe muss man dann auf Eingangssicherheitsregeln klicken.

Dann muss man auf die Schaltfläche Hinzufügen klicken.

Für SQL Server gibt es bereits eine vordefinierte Regel die man verwenden kann und die den Port 1433 nach außen öffnet. Dazu muss man bei Dienst lediglich MS SQL auswählen und der Regel noch einen Namen geben.

Nachdem wir das gemacht haben können wir nun remote auf den SQL Server zugreifen. Dazu muss man nur lokal ein Management Studio starten und dort die IP-Adresse und die Anmeldeinformationen für den SQL Server eingeben.

Konnte man sich erfolgreich anmelden, so kann man nun Abfragen an den SQL Server schicken:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

%d Bloggern gefällt das: