Synology DIskStation DSM 6

Synology DiskStation: MariaDB – ohne PHPMyAdmin – mit Client (HeidiSQL) verwalten

Synology setzt auf MariaDB als Datenbank-System. Zur Verwaltung steht PHPMyAdmin als Paket für die DiskStation bereit. Das Paket ist leider veraltet und nutzt immer noch PHP 5.6. Als alternative kann der offizielle Version von PHPMyAdmin auf der DiskStation installiert werden. Dazu ist aber etwas extra Arbeit notwendig und Updates müssen manuell durchgeführt werden. Dazu kommt noch der Sicherheitsaspekt. Grundsätzlich ist PHPMyAdmin von jedem erreichbar, der Zugriff auf den Webserver hat. Ist der Webserver also von außen, über das Internet, erreichbar, ist auch die Datenbankverwaltung erreichbar. Hier müsste man dann mit Zugriffsbeschränkungen über .htaccess oder die nginx-Konfiguration arbeiten. Alternativ zu PHPMyAdmin können auch diverse Clients genutzt werden, um auf die Datenbank zuzugreifen. Damit diese sich zur Datenbank verbinden können, müssen aber passende User angelegt werden.

Client-Wahl

Es gibt unzählige SQL-Clients, aber nicht alle können mit MariaDB arbeiten und nicht alle sind für alle Betriebssysteme verfügbar. Hier gibt es eine Liste mit kompatiblen Clients für MariaDB. Ich habe mich für HeidiSQL entschieden. Der Client läuft unter Windows und ist gratis. Die nachfolgenden Schritte sind aber unabhängig vom gewählten Client.

Neue(n) User anlegen

Damit sich der Client auch zur Datenbank verbinden kann, sind entsprechende User notwendig. Der – oder eigentlich die – root-User sind dazu nicht in der Lage. Bei der Installation von MariaDB werden einige root-User angelegt, allerdings nur welche die lokal Zugriff gewähren, also localhost, 172.0.0.1 und die LAN IP eurer DS. Einem User ist, aus Sicherheitsgründen, immer eine IP oder ein Netz zugewiesen, in dem er gültig ist. Versucht sich der User von einem Host mit ungültiger IP oder Netz einzuloggen, schlägt das fehl. Um die Sicherheit zu erhöhen, empfehle ich einen komplett neuen User zu verwenden, also ein neuer Username und ein neues Passwort.

  • Verbindet euch per SSH (putty) mit eurer DiskStation. Habt ihr PHPMyAdmin bereits in Verwendung, könnt ihr alternativ auch den Verwenden.
  • Wechselt in das Verzeichnis /usr/local/mariadb10/bin/

    cd /usr/local/mariadb10/bin/
  • Verbindet euch zur Datenbank:
    ./mysql -u root –p

    Gebt das root-Passwort ein.

  • Ihr könnt euch jetzt die bestehenden User anzeigen lassen:
    SELECT User, Host FROM mysql.user WHERE Host <> 'localhost';

    Alternativ könnt ihr euch die Benutzer in PHPMyAdmin im Tab Benutzer anzeigen lassen.

  • Um einen neuen User hinzuzufügen verwendet ihr folgenden Befehl:
    GRANT ALL PRIVILEGES ON *.* TO ‘<Username>’@’<IP>‘ IDENTIFIED BY ‘<Passwort>‘ WITH GRANT OPTION;

    GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'192.168.0.%' IDENTIFIED BY 'neues-passwort' WITH GRANT OPTION;

    Den selben Befehl könnt ihr im Tab SQL im PHPMyAdmin eingeben oder den User über die PHPMyAdmin-GUI erstellen.
    Dieser Befehl legt einen neuen User mit maximalen Rechten auf allen Datenbanken an, der User kann auch selbst neue User anlegen und alle Rechte vergeben, also de facto ein root User, auch wenn er anders benannt wird. Anstelle einer konkreten IP könnt ihr auch % als Wildcard nutzen, also z.B.: 192.168.0.%

  • Legt einen User für jedes Netz/jede IP (oder verwendet %) an, von der aus ihr auf die Datenbank zugreifen wollt. Ihr könnt dabei ruhig die selbe Namen/Passwort-Kombination verwenden.

Möchtet ihr über eine VPN-Verbindung auf die Datenbank zugreifen, vergesst nicht, einen User für das entsprechende Netz oder die IP der VPN-Verbindung anzulegen.

Mit dem oben beschriebenen Befehl legt ihr einen Nutzer an, mit dem sich das komplette Datenbank-System verwalten lässt. Möchtet ihr nur eine bestimmte Datenbank verwalten und/oder jemandem bestimmte Zugriffe und Rechte gewähren, könnt ihr das auf mit dem Befehl machen. Statt ALL listet ihr hier die Rechte auf, die ihr gewähren wollt und statt *.* könnt ihr einzelne Datenbanken oder auch nur einzelne Tabellen angeben.

Verbindung einrichten

Jetzt ist MariaDB für externe Verbindungen bereit. Installiert euch den Client eurer Wahl und richtet eine neue Verbindung ein. Ihr benötigt folgende Daten:

  • Network type: “MariaDB or MySQL”
  • Hostname/IP: die IP oder der Hostname eurer DiskStation, im Normalfall die LAN IP eurer DS vorausgesetzt Ihr greift direkt im LAN darauf zu oder über VPN
  • User: Name des oben angelegten Users
  • Password: Passwort des oben angelegten Users
  • Port: 3306 für MariaDB 5 oder 3307 für MariaDB 10
HeidiSQL Verbindung einrichten
Verbindung zur Datenbank im Client (HeidiSQL) einrichten.

Ihr solltet euch jetzt mit eurer Datenbank verbinden können. Falls nicht, erhaltet ihr eine Fehlermeldung, die mal mehr mal weniger hilfreich ausfällt. Bei einer eher allgemeinen Fehlermeldung klappt die grundlegende Verbindung zum Datenbankserver nicht.

Verbindungsaufbau Fehlermeldung
Bei dieser Fehlermeldung kann keine Verbindung zum Datenbankserver hergestellt werden.

Gründe dafür sind:

  • eine falsche IP
  • ein falscher Port
  • keine Verbindung zum Server
    • der Server ist offline
    • der Client ist offline
    • Client und Server befinden sich nicht im selben Netz/der Server ist vom Standpunkt des Clients aus nicht erreichbar

Ist der Server prinzipiell erreichbar, fällt die Fehlermeldung schon  eindeutiger aus:

Der verwendete User hat keinen Zugriff
Der verwendete User hat keinen Zugriff.

In diesem Fall hat der User keine Berechtigung. Sind nicht gerade Username und/oder Passwort falsch (und der User existiert auch), dann liegt der Fehler meist in der Host-Angabe des Benutzers. Kontrolliert in dem Fall, ob der User und die IP, von der ihr euch verbinden wollt, auch einen Eintrag in der Userdatenbank hat. Glücklicherweise zeigt euch die Fehlermeldung auch an, von welcher IP aus die Verbindung aufgebaut werden soll.

Ich bin mir sicher, dass das nicht die einzigen Fehlermeldungen sind, denen ihr begegnen könnt, allerdings sind das die einzigen denen ich begegnet bin. Solltet ihr andere Fehler haben, schreibt doch einfach einen Kommentar.

Externe Zugriff

Während ihr auf den PHPMyAdmin von überall zugreifen könnt, wo ihr Internet habt (vorausgesetzt euer Webserver ist über das Internet erreichbar), sieht es mit einem Client schon etwas anders aus. Wollt ihr auch außerhalb eures LANs auf die Datenbankverwaltung zugreifen können, so empfehle ich die Verwendung eines VPN. Ein VPN-Server ist als Paket für eure DiskStation vorhanden und schnell eingerichtet. Auch ein User für das VPN-Netz ist schnell angelegt. Somit könnt ihr auf MariaDB auch von extern zugreifen, habt aber trotzdem ein hohes Maß an Sicherheit.

Ähnliche Beiträge

8 thoughts on “Synology DiskStation: MariaDB – ohne PHPMyAdmin – mit Client (HeidiSQL) verwalten

  1. Klasse Anleitung, danke. Bei mir ging es aber erst, nachdem ich die TCP-/IP-Verbindung für Maria DB aktiviert habe.

  2. Mit
    GRANT ALL PRIVILEGES ON *.* TO ‘remoteuser’@’192.168.0.%’ IDENTIFIED BY ‘neues-passwort’ WITH GRANT OPTION;
    also “*.*” statt “.” klappts bei mir.

Schreibe einen Kommentar

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