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