PHP Blogger

Startseite Schreib mir ne Mail! RSS Abo Webnews

SQL Buddy: phpMyAdmin schick angezogen (und hackbar!)

Seit einiger Zeit verstaubt ein weiterer Bookmark in meiner Sammlung und schreit förmlich danach, ausprobiert zu werden: SQL Buddy. Der Name ist so eingängig, ich habe noch nicht einmal den Bookmark-Dienst meines Vertrauens bemühen müssen - schnell mal gegoogelt, wird schon oben stehen.

Was direkt oben steht ist das gleichnamige Open Source Projekt, das bei Sourceforge gehostet wird - Ein Datenbankmanager für Windows, der SQL Server bedient. Das Projekt scheint allerdings schon ein paar Jahre eingemottet zu sein - wenn man das nach der Website beurteilt.

Ich plädiere dafür, das blöde Sourceforge-Projekt vom Sockel zu werfen! Her mit den Backlinks, hier und hier und hier. Lift it up, Google - dann wird die Welt wieder etwas eindeutiger… Ich hoffe, das das jetzt nicht als URL-Spamming gewertet wird (Und wenn, dann nur als liebes URL Spamming)… Huch, jetzt ist ja fast eine Träne die Backe runtergekullert. *lach*

Zunächst drei Worte zur Installation: Es gibt keine. Einfach auf den Webserver hochladen, was innerhalb ein paar Sekunden erledigt ist - denn die Files sind insgesamt lediglich ein paar Kilobyte groß. PMA-User sind da nicht so verwöhnt, um phpMyAdmin in Betrieb zu nehmen muss ein ganzes Bataillon an Dateien durch die Telekomschen Glasfaserverwirrungen hochgeballert werden.

Login

Weiter - der Login: Server und User sind mit localhost und root vorbelegt. Das passt sicher in den meisten Fällen, dann also noch das Passwort und los geht die Lutzi. Und ich glaube, die Lutzi sitzt auf einer Rakete, denn der Login geht super schnell und eine sehr aufgeräumte Oberfläche begrüßt den Benutzer auf englisch. Kein Problem, eine Dropdownliste mit verfügbaren Sprachpaketen wartet nur darauf, benutzt zu werden.

Die Startseite

Mal auf der Startseite weitergeguckt: Eine Datenbank kann hier ohne Umwege angelegt werden und man wird von einer Art Tipp des Tages begrüsst. Sehr nett. Weiter unten werden Tastenkürzel erklärt, mit denen man durch die Applikation navigieren kann… Auf der linken Seite zuerst ein paar praktsiche Funktionen (Userverwaltung, SQL Abfrage, Import, Export), danach die Liste aller Datenbanken. In der Titelzeile sind ebenfalls die wichtigsten Funktionen zu finden.

Die Benutzerverwaltung

Ihr merkt, ich klicke mich der Reihe nach durch ;) Zuerst sieht man eine Liste aller existierender Benutzer, danach hat man direkt die Möglichkeit, einen neuen Benutzer anzulegen. Ganz nett ist beim Anlegen, das man auswählen kann, welche Datenbanken ein Benutzer sehen darf - das geht beim PMA nicht so einfach von der Hand, Wildcards gehen aber auch beim SQL Buddy nicht. Zum Bearbeiten kann man den Datensatz nicht direkt anklicken, sondern muss ihn markieren und dann in der Titelzeile “Bearbeiten” wählen. Ich finde, das hätte man intuitiver lösen können. Das Bearbeiten mehrerer Datensätze gleichzeitig ist auch kein Problem.

Direktabfrage

Ohne eine Datenbank zu wählen, kann man eine Abfrage starten. Natürlich bekommt man prompt die Fehlermeldung “Do Database selected.” präsentiert. Eine kleine Schwachstelle, hier wäre sicherlich ein Dropdown aller DBs hilfreich gewesen, aber die paar Zeichen kann man auch händisch eingeben.

Schön ist hingegen, das die Abfrage direkt im Textfeld stehen bleibt und via Ajax die Ergebnisse nachgeladen und unterhalb der Abfrage eingeblendet werden. So kann man ganz schnell seine Abfrage überarbeiten und erneut abschicken, das klappt im PMA z.B. nicht so elegant.

Direktimport

Ebenfalls ohne eine Datenbank auszuwählen kann man eine Datei importieren. Das geht zwar fix, mir fehlt hier aber die Möglichkeit, einen Zeichensatz auszuwählen, in dem die SQL Datei vorliegt. Hier wird standardmäßig von UTF-8 ausgegangen, was aber trotzdem eine gute Voreinstellung ist.

Direktexport

Auch der Export funktioniert unkompliziert. Hier ist es möglich, eine oder mehrere Datenbanken in einem großen Selectfeld auszuwählen. Man kann hier nur als SQL exportieren, hat aber die Möglichkeit, zwischen kurzen und langen INSERTs zu unterscheiden. Auch die Wahl, ob das Ergebnis heruntergeladen oder im Browser angezeigt werden soll, bleibt dem Benutzer überlassen.

Exportfomate wie XML oder CSV fehlen hier ganz. Zu erst war ich erstaunt, aber je länger ich darüber nachdenke, machen sie an dieser Stelle ja gar keinen Sinn: Beide Formate sind ja datensatzorientiert aufgebaut. Wenn man über eine oder mehrere Datenbanken exportiert und dazu noch über verschiedene Tabellensetups, macht ein Exportformat wie XML oder CSV überhaupt keinen Sinn. Warum kann das eigentlich PMA? Merkwürdig.

Datenbank-Startseite

Wenn man einen Datenbanknamen anklickt, klappen fast ohne merkliche Zeitverzögerung die Tabellennamen auf und die Datenbank-Startseite präsentiert sich. Man sieht eine Liste aller Tabellen nebst Zeichensatz und Zeilenanzahl. Die Tabellennamen kann man nicht direkt anklicken, um zur Tabelle zu kommen; dafür aber Schicke Pfeilbuttons im Mac-Style. Darunter verschiedene Optionen: DB löschen, Zeichensatz ändern, neue Tabelle hinzufügen.

Was fehlt ist meiner Meinung nach, Datenbank kopieren und umbenennen. Sicher: Dafür gibts keine genormten SQL-Statements, phpMyAdmin führt dafür eine Vielzahl automatisch generierter Statements aus, aber gerade die vereinfachen die Arbeit…

Tabelle hinzufügen

Mit dem Hinzufügen beginnt man direkt auf der DB-Startseite und dem ersten Attribut der neuen Tabelle. Wenn man einer Tabelle weitere Felder hinzufügen möchte, wird einfach über Ajax schnell ein neuer Satz Felder nachgeladen. Freitexteingaben, die ein bestimmtes Format erfüllen müssen (wie z.B. Enum-Werte), werden mit einem Ajax-Tooltipp unterstützt.

Tabellen-Startseite

Wer eine Tabelle anwählt, bekommt gleich die ersten 100 Datensätze angezeigt. Ohne Umschweife ans Eingemachte, scheint hier das Motto zu sein. Am Anfang jeder Zeile sieht man ein i-Symbol. Bei Klick öffnet sich für den jeweiligen Datensatz ein Layer, der dem Quickview von Mac ähnelt und den Datensatz ungekürzt anzeigt.

Praktisch ist, das man so verschiedene Datensätze vergleichen kann; Cool ist, das er beim Blättern den Quicklook nicht zu macht; Genial ist, das man sogar die Tabelle und/oder Datenbank wechseln kann, ohne das die Datensätze verschwinden. Wer zwei Datensätze vergleichen möchte, kann sich nichts bessere wünschen. Den Quicklook-Layer kann man übrigens auch verschieben und in der Größe verändern. Sehr cool.

Tabellenstruktur

Diese Übersichtsseite präsentiert sich ähnelich wie alle Übersichts- oder Einstiegsseiten: Man sieht zunächst eine Liste der Felddefinitionen. Auch hier muss man erst eine Definition anhaken und danach auf “Bearbeiten” klicken, um sie verändern zu können.

Eine neue Spalte ist schnell und komfortabel hinzugefügt. Witzig ist hier, das “Autoincrement” mit “automatischer Zuwachs” übersetzt ist. Sehr geil ;) Das Umbenennen einer Tabelle und den Zeichensatz zu ändern geht schnell.

Jetzt die Indizes: Der SQL Buddy ermöglicht das Löschen und Hinzufügen von Indizes. Wie viele Spalten verwendet werden und welcher Index-Typ angelegt werden soll, bleibt dem Benutzer überlassen. Leider wird für den Index ein automatischer Name vergeben: Der hat immer den Namen des ersten Attributes, das der Index enthält. Schade, hier wäre die Eingabemöglichkeit für einen treffenderen Bezeichner toll gewesen.

Datensatz einfügen

Recht spartanisch kommt die Eingabemaske zum Einfügen von Datensätzen daher. Dabei wird aber trotzdem je nach Datentyp unterschieden: Ein Enum-Attribut wird z.B. Als Dropdown-Liste präsentiert, während ein Text-Attribut als Textarea und widerum ein Attribut vom Typ Varchar als Text-Input daherkommt.

Default-Werte sind nicht vorbelegt. Auch die Möglichkeit zu sagen, das man mehrere Datensätze hinzufügen möchte, gibt es nicht. Aber das ist alles kein Beinbruch.

SQL-Abfrage im Tabellenmodus

Hier ist die Datenbank nun schon vor gewählt, der restliche Vorgang ist identisch zur Direktabfrage.

Tabellen Im- und Export

Im- und Export funktionieren wie die Direkt-Pendants. Zusätzlich kann jedoch hier zwischen CSV- und SQL-Export unterscheiden. Beide Formate bieten ein paar Detailoptionen an, mit den das Ausgabeformat, feinformatiert werden kann.

Wie bei den Direktfunktionen fehlt auch hier beim Import die Angabemöglichkeit des Zeichensatzes.

Sicherheit

Wer jetzt schon am abfeiern ist und phpMyAdmin auf seinem Livesystem gegen den SQL Buddy tauscht, sei gewarnt. Die Entwickler von PHPIDS warnen vor gravierenden Sicherheitslücken: “Es ist möglich, via SQLBuddy und einer kombinierten XSS/CSRF Attacke sämtliche Datenbanken zu löschen, User anzulegen und zu löschen etc etc - und das mit etwas Geschick über VPN-/Intranetgrenzen hinweg.”

Bleibt nur zu hoffen, das die Entwickler schnell reagieren und die Sicherheitslücken beheben.

Fazit

Der SQL Buddy hat das Zeug, phpMyAdmin den Rang ab zu laufen. Schnell genug und leichtgewichtig ist er. Viele Detailfunktionen, die phpMyAdmin so auszeichnen, weist der SQL Buddy aber nicht auf. Teilweise gewollt, teilweise sicher aber auch ungewollt. Das Feature-Setup reicht aber allemal dazu aus, die Top-10 Tasks, die man an einer Datenbank erledigen muss, schnell und unkompliziert vor zunehmen.

Nicht zu vernachlässigen ist das Thema Sicherheit: Denn hier muss noch einiges getan werden (siehe Punkt “Sicherheit”) - von einem Einsatz der Software auf einem Live-System ist auf jeden Fall abzuraten!

Ein paar Kleinigkeiten haben zusätzlich gestört: Das Error-Handling ist nicht das Beste (ab und an waren Notices und Warnings im Frontend zu sehen) und die Übersetzung scheint automatisch vorgenommen zu sein. Hier sollte ein deutscher Nutzer nochmal gegenlesen.

Aber auch bei diesem Projekt bleibt der Wehmutstropfen: Die getestet Version 1.3.0 basiert auf PHP4 - trotzdem bin ich mir sicher, das der SQL Buddy bald in einer überarbeiteten und abgesicherten PHP 5 Variante vorliegt. Schließlich besteht er nicht aus einem so gigantischen Code-Berg wie der PMA.

Ähnliche Artikel:

  1. Die Macht von INNER JOINS
  2. auto_increment mit ALTER TABLE
  3. phpMyAdmin Update auf 2.11: Query Profiling
  4. Wo ist meine MySQL Performance?
  5. Sicherheitsrelease für phpMyAdmin 2.11.1.2

Webmasterpage meint dazu:

31. Oktober 2008 um 17:59

Nette sache, sieht echt chic aus! Aber als Programmierer lege ich nicht so viel Wert auf das Design, sondern vielmehr auf die Funktionalität!

Gruß Roger

sonyon meint dazu:

3. November 2008 um 10:55

Ähm csv = Excel import, also ich finde das dann doch hin und wieder nützlich ;)
Wobei ich mit nem XML export auch noch nie was anfangen konnte

.mario meint dazu:

10. November 2008 um 12:53

“Zu Sicherheitslücken ist erstmal auch nicht so viel zu sagen”

Oh doch - leider schon. Das Projekt ist in der Hinsicht sehr unreif und hat viel Verbesserungsbedarf. Für Testprojekte die man lokal nutzt ist SQLBuddy ganz okay und die Probleme fallen nicht weiter ins Gewicht. Auf Live-Systemen sollte man das Tool aber (noch) auf gar keinen Fall nutzen. Ich habe bereits versucht die Entwickler zu kontaktieren - aber noch keine Antwort.

Lange Rede kurzer Sinn - es ist möglich via SQLBuddy und einer kombinierten XSS/CSRF Attacke sämtliche Datenbanken zu löschen, User anzulegen und zu löschen etc etc - und das mit etwas Geschick über VPN/Intranet grenzen hinweg.

My 2¢, Grüße,
.mario

PHP Blogger meint dazu:

10. November 2008 um 12:59

Danke für den wichtigen Hinweis, Mario… Werd gleich mal den Artikel entsprechend anpassen!

Faba meint dazu:

18. November 2008 um 15:52

Schade, dass es diese Sicherheitsprobleme noch gibt. Ein Facelift in diese Richtung könnte PMA vielleicht auch ganz gut tun, mal ehrlich: Diese Oberfläche von PMA ist doch echt schon antiquiert.

Webdesign Berlin meint dazu:

12. April 2009 um 02:16

Vom Design her sieht das schon sehr ansprechend aus. Aber aus der Sicht der Sicherheit würde ich das Tool mit Sicherheit nicht einsetzen.

RSS für Kommentare zu diesem Artikel · TrackBack URI

Schreib Deine Meinung