MariaDB 10 Port ändern auf Synology NAS

Synology NAS bieten neben ihren eigentlichen Aufgaben als Dateispeicher auch die Möglichkeit, per Package Center MariaDB System nachzuinstallieren und zu betreiben. Aktuell (Stand 02/2019) stehen dabei die Versionen MariaDB 5 und MariaDB 10 zur Verfügung. MariaDB 5 hört dabei auf den Standard-Port tcp/3306, während MariaDB 10 auf Port tcp/3307 hört. Der Betrieb beider Datenbanken macht auf Dauer keinen großen Sinn (außer man benötigt MariaDB 5 für Legacy-Datenbanken), daher möchte ich im folgenden Artikel nur MariaDB 10 betreiben und auf den Standard-Port tcp/3306 umkonfigurieren.

MariaDB

Normalerweise werden solche Anpassungen in der Datei /usr/local/mariadb10/etc/mysql/my.cnf vorgenommen. Wie allerdings in der Datei zu lesen ist, sind auf der Synology Änderungen in dieser Datei nicht Update-Persistent. Die Anpassungen müssen daher in der Datei /var/packages/MariaDB10/etc/my.cnf vorgenommen werden, um auch bei einem Update nicht überschrieben zu werden.

Am Einfachsten ist es, die Datei lokal am PC zu kopieren und über ein Share mit der File-Station hoch-/runterzuladen und per SSH hin und her zu kopieren:

cp /var/packages/MariaDB10/etc/my.cnf /volume1/<Share-Name>/my.cnf

Um den Port zu ändern, wird die Datei nun wie folgt angepasst:

[client]
port = 3306

[mysqld]
port = 3306

Die bearbeitet Datei lädt man wieder per File-Station auf den Share hoch und kopiert sie per SSH zurück in den entsprechenden Ordner:

cp /volume1/<Share-Name>/my.cnf /var/packages/MariaDB10/etc/my.cnf

Im Anschluss wird der MariaDB Service neu gestartet, entweder über das Package Center oder über die CLI:

synoservicectl --restart pkgctl-MariaDB10
Package Center

In den Eigenschaften von MariaDB im Package Center erscheint weiterhin Port 3307, obwohl der Service auf 3306 hört. Der Text ist leider wohl hardcoded und muss ebenfalls händisch geändert werden, wenn man das „sauber“ haben möchte. Verantwortlich hierfür ist ein Eintrag in der Datei /volume1/@appstore/MariaDB10/ui/Main.js.

Auch hier kopiert man die entsprechende Datei per SSH in ein Share und lädt sie über die File-Station auf einen Client herunter:

cp /volume1/@appstore/MariaDB10/ui/Main.js /volume1/<Share-Name>/Main.js

In der heruntergeladenen Datei wird der Parameter syno_displayfield wie folgt angepasst:

{xtype:"syno_displayfield",fieldLabel:SYNO.SDS.MARIADB10.GetString("ui","port"),value:"3306"}

Nun lädt man die Datei wieder auf sein Share hoch und kopiert die Datei ins entsprechende Verzeichnis:

cp /volume1/<Share-Name>/Main.js /volume1/@appstore/MariaDB10/ui/Main.js

Auf die gleiche Art kann natürlich der Port auch komplett auf einen Non-default Port geändert werden.

phpMyAdmin

Verwendet man phpMyAdmin aus dem Synology Package Center funktioniert Zugriff auf die DB trotz dem geänderten Port, da das Package Socket-basiert über die Datei /run/mysqld/mysqld10.sock auf die DB zugreift und nicht per TCP.

Installiert man phpMyAdmin manuell, ist der Server in der Datei config.inc.php im Root-Verzeichnis der phpMyAdmin Installation anzupassen.

Konfiguration per Socket

$cfg['Servers'][$i]['host'] = '<localhost|127.0.0.1>';
$cfg['Servers'][$i]['socket'] = '/run/mysqld/mysqld10.sock';
$i++;

Konfiguration per TCP (im folgenden Beispiel werden noch die Systemdatenbanken ausgeblendet – der Parameter ist optional)

$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = '<localhost|127.0.0.1>';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema)';
$i++;

Verbindet man sich zur DB von einer remote phpMyAdmin Installation ist dazu ein eigener User mit Remote Access Rechten anzulegen (siehe z.B. hier) und die Konfigurationsdatei wie folgt anzupassen:

$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = '<DB-Server Hostname/IP>';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema)';
$i++;
Update 16.05.2019

Seit MariaDB Package Version 10.3.11 ist es nun auch möglich, den Port über die Package-GUI zu ändern. Die vorher beschriebene manuelle Anpassung funktioniert weiterhin, ist jedoch nicht mehr erforderlich.

MariaDB 10 Package Settings -> Port

MariaDB 10 Package Settings -> Port

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.