Nach Rücksprache mit @LittleWing stelle ich hier ein quelloffenes Projekt vor, an dem ich mitarbeite: LibreDB Studio, ein Datenbank-Client, der als Container läuft und im Browser bedient wird.
Der Anlass passt zu diesem Unterforum. Wer auf dem Heimserver Nextcloud, Immich, Paperless oder Home Assistant betreibt, hat damit auch eine PostgreSQL oder MariaDB laufen, meistens im selben Docker-Compose-Stack. Will man dort einmal hineinsehen, installiert man üblicherweise einen Client auf dem Rechner und muss den Datenbank-Port dafür ins Netz hängen. Der andere Weg ist, den Client in dasselbe Docker-Netz zu stellen und nur den Browser aufzumachen. Der Datenbank-Port kann dann zubleiben.
Beim ersten Start wird das Administratorkonto angelegt und das Passwort ins Container-Log geschrieben, abrufbar mit docker logs. Wer das lieber vorher festlegt, setzt ADMIN_PASSWORD. Hängt die Datenbank in einem eigenen Compose-Netz, hängt man den Container mit hinein und trägt als Host den Containernamen ein, also etwa nextcloud-db statt einer IP.
Im Alltag macht er das, was man von so einem Werkzeug erwartet: Tabellen durchsehen, Zeilenzahl und Größe, Indizes und Fremdschlüssel, Abfragen mit Autocomplete, Ausführungsplan, ER-Diagramm, Vergleich zweier Datenbanken, Sitzungen und langsame Abfragen. Praktisch für einen Heimserver finde ich den Sandbox-Modus: die Anweisung läuft wirklich, man sieht das Ergebnis, und am Ende wird alles zurückgerollt. Man sieht also, was ein UPDATE an der Nextcloud-Datenbank anrichten würde, ohne es anzurichten.
Quelloffen, MIT-Lizenz, keine kostenpflichtige Variante, und wir hosten nichts.
Zwei Dinge sage ich gleich dazu, weil sie hier auffallen würden. Die Oberfläche gibt es bisher nur auf Englisch. Und die Zahl der unterstützten Datenbanken führt in die Irre: 26 Verbindungstypen bringt der Client selbst mit, weitere 28 Engines sprechen das Protokoll eines dieser Typen und verbinden sich ohne eigenen Treiber. Dasselbe Protokoll bedeutet aber nicht denselben Systemkatalog, und genau daraus liest der Client Tabellenliste, Größen und Indizes. Wir haben alle 28 als Container gestartet und bei jeder dieselben fünfzehn Ansichten durchprobiert: achtzehn haben überall geantwortet, zehn nur teilweise. Bei einer völlig funktionierenden Engine haben wir uns dabei selbst vertan und sie erst im zweiten Durchlauf richtig eingeordnet, weil ihre Statistiken verzögert aktualisiert werden.
Für den typischen Heimserver-Fall ist das allerdings ruhiges Wasser: PostgreSQL, MariaDB und MySQL, SQLite und MongoDB laufen über eigene Treiber.
Letzte Woche kam 0.18.0 heraus, unter anderem mit InfluxDB, das hier einige wegen Home Assistant einsetzen dürften. In derselben Version haben wir einen Fehler von uns behoben: bei Anmeldung über OIDC wurden Sitzungen akzeptiert, obwohl die Antwort des Anbieters nie geprüft wurde, betroffen 0.7.0 bis 0.17.0. Wer so eine Installation hat, sollte aktualisieren; die lokale Anmeldung war nicht betroffen.
Quellcode und Compose-Beispiele: https://github.com/libredb/libredb-studio
Wenn jemand das Ding an eine Datenbank hängt und etwas nicht sauber angezeigt wird, schreibt es gern hier rein. Genau solche Rückmeldungen korrigieren unsere Messung.
Der Anlass passt zu diesem Unterforum. Wer auf dem Heimserver Nextcloud, Immich, Paperless oder Home Assistant betreibt, hat damit auch eine PostgreSQL oder MariaDB laufen, meistens im selben Docker-Compose-Stack. Will man dort einmal hineinsehen, installiert man üblicherweise einen Client auf dem Rechner und muss den Datenbank-Port dafür ins Netz hängen. Der andere Weg ist, den Client in dasselbe Docker-Netz zu stellen und nur den Browser aufzumachen. Der Datenbank-Port kann dann zubleiben.
Code:
docker run -d -p 3000:3000 ghcr.io/libredb/libredb-studio:0.18.0
Beim ersten Start wird das Administratorkonto angelegt und das Passwort ins Container-Log geschrieben, abrufbar mit docker logs. Wer das lieber vorher festlegt, setzt ADMIN_PASSWORD. Hängt die Datenbank in einem eigenen Compose-Netz, hängt man den Container mit hinein und trägt als Host den Containernamen ein, also etwa nextcloud-db statt einer IP.
Im Alltag macht er das, was man von so einem Werkzeug erwartet: Tabellen durchsehen, Zeilenzahl und Größe, Indizes und Fremdschlüssel, Abfragen mit Autocomplete, Ausführungsplan, ER-Diagramm, Vergleich zweier Datenbanken, Sitzungen und langsame Abfragen. Praktisch für einen Heimserver finde ich den Sandbox-Modus: die Anweisung läuft wirklich, man sieht das Ergebnis, und am Ende wird alles zurückgerollt. Man sieht also, was ein UPDATE an der Nextcloud-Datenbank anrichten würde, ohne es anzurichten.
Quelloffen, MIT-Lizenz, keine kostenpflichtige Variante, und wir hosten nichts.
Zwei Dinge sage ich gleich dazu, weil sie hier auffallen würden. Die Oberfläche gibt es bisher nur auf Englisch. Und die Zahl der unterstützten Datenbanken führt in die Irre: 26 Verbindungstypen bringt der Client selbst mit, weitere 28 Engines sprechen das Protokoll eines dieser Typen und verbinden sich ohne eigenen Treiber. Dasselbe Protokoll bedeutet aber nicht denselben Systemkatalog, und genau daraus liest der Client Tabellenliste, Größen und Indizes. Wir haben alle 28 als Container gestartet und bei jeder dieselben fünfzehn Ansichten durchprobiert: achtzehn haben überall geantwortet, zehn nur teilweise. Bei einer völlig funktionierenden Engine haben wir uns dabei selbst vertan und sie erst im zweiten Durchlauf richtig eingeordnet, weil ihre Statistiken verzögert aktualisiert werden.
Für den typischen Heimserver-Fall ist das allerdings ruhiges Wasser: PostgreSQL, MariaDB und MySQL, SQLite und MongoDB laufen über eigene Treiber.
Letzte Woche kam 0.18.0 heraus, unter anderem mit InfluxDB, das hier einige wegen Home Assistant einsetzen dürften. In derselben Version haben wir einen Fehler von uns behoben: bei Anmeldung über OIDC wurden Sitzungen akzeptiert, obwohl die Antwort des Anbieters nie geprüft wurde, betroffen 0.7.0 bis 0.17.0. Wer so eine Installation hat, sollte aktualisieren; die lokale Anmeldung war nicht betroffen.
Quellcode und Compose-Beispiele: https://github.com/libredb/libredb-studio
Wenn jemand das Ding an eine Datenbank hängt und etwas nicht sauber angezeigt wird, schreibt es gern hier rein. Genau solche Rückmeldungen korrigieren unsere Messung.