ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

MySQL Workbench

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

MySQL/mysql.png MySQL-Workbench {de} ist ein Modellierungswerkzeug für Datenbanken und hilft bei deren Planung und Wartung. Das Tool gilt als Nachfolger des DBDesigners4 und so können alte Modelle aus diesem in MySQL Workbench importiert werden. Auf der Download-Seite von MySQL ist als Ubuntu-Paket die stabile Version 5.2 erhältlich.

Installation

Ab Ubuntu 12.04

Ab Ubuntu 12.04 befindet sich MySQL Workbench in den offiziellen Paketquellen und kann einfach über das Paket

  • mysql-workbench (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install mysql-workbench 

sudo aptitude install mysql-workbench 

installiert werden [4].

Bis Ubuntu 11.10

Aufgrund der Tatsache, dass auf der MySQL-Seite {de} entsprechende Pakete für Ubuntu angeboten werden, ist eine unkomplizierte Installation möglich. Dazu kann man einfach unter http://dev.mysql.com/downloads/workbench/5.2.html {en} die für die Distribution passende Version als Paket herunterladen.

Hinweis!

Fremdpakete können das System gefährden.

Danach kann das Paket einfach [1] installiert werden.

Das Programm ist unter folgenden Desktop-Umgebungen an genannten Stellen zu finden:

  • Unter GNOME und KDE Plasma befindet sich der Menüpunkt unter "Entwicklung -> MySQL Workbench".

Übersicht der Funktionen

MySQL_Workbench.png MySQL_Workbench_Model.png

Bei der beschriebenen Version (bzw. dem für diese beschriebenen Funktionsumfang) handelt es sich um die in den Quellen vorhandene Version 5.2.40. Die aus dem MySQL-Download-Bereich herunterladbare Version kann eventuell neuer sein.

Datenmodellierung

Der Haupt-Einsatzbereich dieser Software ist, trotz der etwas umfangreicheren Funktionen, die Modellierung von Daten. Das linke der beiden Bilder zeigt die Startseite der beschriebenen Version, rechts ist die Ansicht eines leeren Datenbank-Schemas zu sehen.

Das Schema

Das "Datenbank-Schema" ist das zentrale Objekt eines Projekts. In diesem Schema definiert man die Standard-Werte für die Datenbank bzw. die Tabellen. Der Name des Schemas entspricht dem Namen, der für die Datenbank verwendet werden soll; bei exportierten SQL-Queries, mit denen die Tabellen erstellt bzw. die Daten eingefügt werden, ist auch immer der "Schema-Name" als "Datenbank-Name" enthalten. Man sollte daher einen aussagekräftigen Namen wählen, um spätere Komplikationen im produktiven Umfeld zu vermeiden.

Der zweite Teil des Schemas ist das "Charset". Es definiert den Zeichensatz, der bei der Speicherung der Daten verwendet werden soll. Wenn man Felder definiert, in denen Text gespeichert werden soll, wird das Feld immer mit dem im Schema definierten Zeichensatz gespeichert – es sei denn, man gibt bei der Definition der Tabelle explizit einen anderen Zeichensatz an. (Weitere Informationen dazu finden sich im Abschnitt zu den Tabellen.)

Der dritte Teil des Schemas sind eventuelle "Kommentare", die zur Verbesserung der Verständlichkeit einfügt werde können, damit beim späteren Öffnen der Tabellen klar ersichtlich ist, warum das Schema erstellt wurde.

Die Tabellen

Ein weiterer integraler Bestandteil sind die Tabellen, auch "Relationen" genannt: Sie definieren die Struktur der Daten.

Die Tabellen können in einem graphischen Editor definiert und bearbeitet werden. Hier können dann Namen, (falls abweichend von Schema) Charset, die DB-Engine sowie ggf. auch zusätzliche Kommentare eingegeben werden. Ebenso sind problemlos Verbindungen zwischen den Tabellen definierbar, indem "Foreign Keys" eingefügt werden. Für alle diese Aktionen werden automatisch Indizes angelegt, so dass dies nicht manuell erfolgen muss. (Es können aber jederzeit weitere angelegt werden.) Sollten Trigger benötigt werden, so können auch diese problemlos in der Tabellendefinition eingefügt werden. (Dazu ist jedoch detaillierteres Wissen über SQL erforderlich, da die Trigger nur als "SQL-Statement" eingetragen werden können.) Sollte man eine DB-Engine verwenden, die eine Partitionierung ermöglicht, so ist auch diese hier konfigurierbar. Ebenso ist die Möglichkeit gegeben, zusätzliche Einstellungen für diese Tabelle vorzunehmen.

Sollte es nötig sein, einer erstellten Tabelle bereits vor der ersten Nutzung Einträge hinzuzufügen, so ist es möglich, diese Einträge zusätzlich im Schema zu speichern.

Bei importierten Datenbanken, die aus einem bestehenden Datenbank-Schema (einer bereits bestehenden Datenbank) importiert worden sind, können auch eventuelle Berechtigungen, die auf die Tabelle selbst definiert sind, bearbeitet werden.

Die Views

MySQL unterstützt Views (=„Ansichten“ auf ausgewählte Daten) – auch diese können hier definiert werden. Leider ist es bisher nur möglich, Views in Form eines "SQL-Statements" zu generieren, wozu Wissen um den Aufbau von SQL erforderlich ist. Auch hier können wieder zusätzlich zu Namen und SQL-Statement weitere Kommentare und im Schema vorhandene Berechtigungen definiert und bearbeitet werden.

Die Routinen

Im Bereich SQL sind Routinen wohl vorrangig als Stored-Procedures bekannt. Auch ihre Implementierung ist nur als "SQL-Statement" möglich. Es besteht jedoch auch in diesem Fall die Möglichkeit, die im Schema definierten Benutzer und Berechtigungen auf die einzelnen Funktionen zu übertragen.

Routine-Gruppen

Zur besseren Übersicht können die Funktionen in Gruppen zusammengefasst werden. Vorhandene Funktionen können dann per Drag & Drop in die Gruppe eingefügt werden oder auch direkt in das SQL-Fenster, das sich im zweiten Reiter befindet, eingetragen werden.

Schema-Privilegien

In den Schema-Privilegien können die Benutzer, von denen die erstellte DB geöffnet oder bearbeitet werden können soll, definiert werden und ihnen Zugriffsrechte zugewiesen werden. Diese Zugriffsrechte können dann über die Rollen definiert werden, die den Benutzern zugeordnet werden, um eine Struktur zu definieren.

SQL-Skripte

Bei einer Applikation, die sich weiter entwickelt, kommt es vor, dass sich das Daten-Schema ändert und die Datenbank bzw. deren Tabellen, Views, Funktionen und Trigger angepasst bzw. geändert werden müssen. Der Bereich SQL-Skripte ist dafür geeignet, die entsprechenden Update-Scripts zu verwalten: Dort kann man komplette SQL-Skripte als Objekte ablegen und diese so übersichtlich verwalten.

Model-Bemerkungen

Um umfangreiche Notizen zu den einzelnen Bereichen zu verwalten, gibt es einen weiteren Bereich des Programms. Dieser bietet die Möglichkeit der Dokumentation der Struktur an zentraler Stelle.

ER-Diagramme

Entity-Relationship-Diagramme sind häufig der erste Punkt einer Datenbank-Modellierung. Sie sind hilfreich bei einem Problem, das DB-Designern häufig sehr vertraut ist: Dem Verlust der Übersicht über eine komplexe Datenbankstruktur mit multiplen "Foreign-Key-Regeln". Das ER-Diagramm ist zur Lösung dieses Problems hilfreich, indem es die Zusammenhänge zwischen einzelnen Tabellen graphisch darstellt. Um dies auch in der MySQL-Workbench zu ermöglichen, kann man im oberen Arbeitsbereich ein Diagramm anlegen, in dem die einzelnen Tabellen frei angeordnet werden können. Es ist hier auch die Möglichkeit vorhanden, Relationen zu definieren. Dies erlaubt eine bessere Übersicht über die Tabellenverknüpfungen.

SQL-Development

Die MySQL-Workbench erlaubt es, Änderungen, die in das Datenbank-Schema eingepflegt werden, direkt in die Test-Datenbank einzupflegen. Die Anzeige der Tabellen bzw. von deren Struktur entspricht dabei der Struktur ihres Schemas.

Arten der Verbindung

Es gibt drei Arten, wie eine Verbindung zur Datenbank geöffnet werden kann.

TCP/IP

Der gebräuchlichste Weg ist wohl eine TCP/IP-Verbindung, da der Server meist nicht auf dem lokalen Rechner liegt.

Achtung!

Sollte sich der Server außerhalb ihres eigenen Netzwerkes befinden, so nutzen sie möglichst eine verschlüsselte Verbindung. Die einfachste Alternative dazu finden sie im nächsten Punkt, TCP/IP over SSH. Eine weitere Möglichkeit wäre die Nutzung von SSL, um die Verbindung abzusichern.

TCP/IP over SSH

Als Alternative zu einer normalen TCP/IP-Verbindung kann die Verbindung über einen SSH-Zugang getunnelt werden; dies gewährleistet ein höheres Maß an Sicherheit. Zu beachten ist hierbei jedoch, dass der Hostname des MySQL-Servers immer Localhost/127.0.0.1 sein muss, wenn sich der "MySQL-Server" auf dem selben System wie der "SSH-Server" befindet.

Socket/Pipe

Die dritte Art der Verbindung sind die im Linux-Bereich sehr verbreiteten Sockets. Diese Möglichkeit der Verbindung ist nur verfügbar, wenn sich der Server auf dem selben Rechner befindet, auf dem Workbench ausführt wird. Um die Verbindung zu öffnen, wählt man das "Socket-File" aus, das sich normalerweise (d.h. wenn die Einstellung in der Konfigurationsdatei nicht verändert wurde) unter /var/run/mysqld/mysqld.sock findet.

Der SQL-Editor

Nachdem man eine Verbindung erstellt und diese geöffnet hat, erscheint in Workbench ein weiterer Reiter – der sogenannte SQL-Editor. Sein unterer Bereich ist dem Schema-Bereich der Modellierung recht ähnlich. Hier gibt es die Möglichkeit, das gewünschte Schema zu öffnen und die Tabellen und Daten zu bearbeiten. Sein oberer Bereich ist ein großes Eingabefeld, in dem man mit SQL-Code bestimmte Aufgaben ausführen kann.

Hinweis:

Bei Benutzung dieses Feldes ist darauf zu achten, dass die Tabellen, Views, o.ä. immer als Schemaname.Objektname angegeben werden, da das aktive Schema nicht ausgewählt ist.

Alternativ dazu verwendet man vor solchen Befehlen use Schemaname;, um dieses Problem zu umgehen.

SQL-Snippets

Es ist möglich, häufig benötigte Teil-Befehle oder auch vollständige Befehle als Snippet zu speichern, um sie nicht immer wieder eingeben zu müssen. Man kann dazu den entsprechenden SQL-Befehl in das obere Feld eingeben und ihn über einen Button in der oberen Leiste als Snippet speichern. Es ist auch möglich, eine Beschreibung dazu einzugeben, um so später die Funktion des Snippets einfach bestimmen zu können.

Per Doppelklick oder über das Kontext-Menu können einzelne Snippets wieder in den Eingabebereich kopiert werden. Es ist auf diesem Weg auch möglich, damit den Eingabebereich zu überschreiben.

Server-Administration

Der dritte Bereich, der mit MySQL-Workbench abgedeckt werden kann, ist die komfortable Administration der "MySQL-Server". Hierbei kann man sich sowohl einen Überblick über seinen MySQL-Server, dessen Funktion und Auslastung verschaffen, wie auch den Server direkt administrieren.

Server-Status

Nachdem man eine Verbindung erstellt und eine Server-Instanz konfiguriert hat, kann man sich mit dem Server verbinden. Bei entfernten Systemen ist eine SH-Verbindung nötig, um bestimmte administrative Funktionen nutzen zu können. Nach der Herstellung der Verbindung mit dem Server erscheint eine Leiste mit verschiedenen Daten, die den Serverstatus anzeigen. Darunter ist auch das etwas größere Feld zur Konfiguration des Servers. Dort kann man den MySQL-Server starten oder stoppen und zudem sehen, ob und wann der Server gestoppt bzw. gestartet worden ist.

Konfiguration

In diesem Bereich können alle Optionen, die in der Konfigurationsdatei einstellbar sind, angepasst werden. Durch die SSH-Verbindung werden alle Änderungen, die hier vorgenommen werden, in der Konfigurationsdatei des Servers gespeichert – es gibt hier also eine übersichtliche Möglichkeit, den "MySQL-Server" an die eigenen Bedürfnisse anzupassen und sich einfach in die Konfiguration des Servers einarbeiten zu können.

Hinweis:

Erfahrene Anwender sollten die Einstellungen selbst in der Konfigurationsdatei vornehmen, um Probleme und mögliche Fehler im Programm zu vermeiden. Die Konfigurationsdatei befindet sich im Normalfall unter /etc/mysql/my.cnf .

Accounts

In der Account-Administration können neue Benutzer angelegt werden und ihnen die benötigten Rechte zugeordnet werden.

Access-Management

Im Bereich des "Server Access Managements" definiert man die Benutzer, die auf dem MySQL-Server vorhanden sein sollen.

Im linken Bereich befindet sich die Übersicht über die vorhandenen Accounts. Rechts daneben erscheinen bei einem ausgewählten Account der Login-Name und der Host, von dem aus eine Verbindung aufgebaut werden kann. Über weitere Reiter können dann die "Account-Limits", d.h. Verbindungseinschränkungen, und die "administrativen Rollen" verwaltet werden. Die "administrativen Rollen" sind vordefinierte Berechtigungsschemata, die für jeden Benutzer einzeln eingestellt werden können. Es werden dann im rechten Bereich der Anzeige die für den Benutzer momentan zugeordneten Privilegien angezeigt, in der Mitte befinden sich die Rollen und zudem ist erkennbar, welche davon dem Benutzer zugeordnet sind.

Schema-Privilegien

Im zweiten Reiter des Account-Bereichs können "Privilegien" für einzelne Schemata definiert werden: Über zwei Buttons unter der Liste an der rechten Außenseite können die Einträge erstellt oder gelöscht werden. Das Bearbeiten ist einfach möglich, indem die Einträge selektiert werden und danach die Änderungen im darunter liegenden Bereich ausgeführt und mit dem Bestätigungsbutton in der unteren rechten Ecke bestätigt werden.

Verbindungen

Im Bereich der "Verbindungen" (Connections) bekommt man eine Übersicht über die momentan vorhandenen, offenen Verbindungen und deren Status. Sollten Probleme mit zu vielen offenen Verbindungen auftreten, so können hier über einen Button schlafende Verbindungen beendet werden, um das Herstellen weiterer Verbindungen zu ermöglichen.

Variablen

Um auch in die tieferen Schichten des "MySQL-Servers" blicken zu können, bekommt man auch eine Übersicht über die gesamten Variablen, die der Server intern verwaltet. Zur besseren Übersicht ist es auch möglich, nur einzelne Bereiche zu betrachten. Bei den meisten Variablen ist ebenfalls eine Beschreibung mit angegeben, um jedem die Bedeutung der Variablen zu vermitteln bzw. das Verständnis des Inhaltes zu erleichtern.

Dumps

Um Datenverlust zu verhindern kann man von jeder Datenbank einen Dump erstellen und somit einen "Momentanzustand" erfassen. Es ist möglich, den Dump in diesem Workbench-Bereich sowohl in ein Verzeichnis als auch in eine einzelne Datei zu schreiben. Der Re-Import aus beiden Varianten ist ebenfalls über dieses Menü möglich.

Der dritte Kartei-Reiter in diesem Bereich dient der Konfiguration des Dump-Vorgangs, um eventuelle Spezialfälle ebenfalls erfassen zu können.

Logs

Der letzte Bereich der Administration. Hier können die Logs des MySQL-Servers ausgelesen werden.

Hinweis:

Diese Möglichkeit steht nur mit MySQL 5.1 oder höher zur Verfügung, und auch nur dann, wenn die Einträge in einer MySQL-Datenbank gespeichert werden.

Import/Export

Um die Daten in einem MySQL-Server nutzen zu können bzw. um vorhandene Datenbanken weiter bearbeiten zu können, sind Im- und Export-Funktionen nötig.

Import

Eine mittlerweile veraltete Möglichkeit ist der Import von alten DBDesigner4-Modellen. Eine zweite Möglichkeit wäre, über die Startseite eine vorhandene komplette Datenbank zu importieren, in der bereits das DB-Schema verwendet wird, ohne dass dies in einer Datei von MySQL-Workbench vorhanden ist. Als dritte Möglichkeit kann man ein "Create-Script" nutzen, das allerdings bereits in einer SQL-Datei vorhanden sein muss: Aus den Anweisungen in dieser Datei kann MySQL-Workbench ebenfalls ein ER-Model generieren.

Export

Die einfachste Art des Exports findet sich im Kontext-Menu: Mit einem Klick der rechten Maustaste rechte Maustaste kann die SQL-Anweisung zum Erstellen der Tabelle in die Zwischenablage eingefügt werden. Ebenso ist es möglich, den SQL-Code zum Einfügen der Standard-Inhalte in den Zwischenspeicher einzufügen.

Soll das gesamte Schema erstellt werden, ohne jeweils einzelne Tabellen in die Zwischenablage kopieren zu müssen, kann unter "File -> Export -> Forward Engineer SQL CREATE Script" eine SQL-Datei mit dem Code generiert werden. Änderungen an diesem Code können dann über zwei Varianten erkannt und exportiert werden.

Die erste Variante wäre das "SQL-ALTER-Script", das über den Menüpunkt "File -> Export -> Forward Engineer SQL ALTER Script" erstellt werden kann. Dabei ist aber ein "SQL-CREATE-Script" als Vergleichsbasis nötig. Das ALTER-Script ist dann ebenfalls eine SQL-Datei, die die Befehle für die Änderungen enthält.

Die zweite Variante ist das Synchronisieren mit einem CREATE-Script. Dabei wird über den Menü-Punkt "File -> Export -> Syncronize with SQL CREATE Script" die Möglichkeit gegeben, bestimmte Teile der Änderungen von der Übernahme auszuschließen. Am Ende wird jedoch wieder ein SQL-ALTER-Script generiert, dieses muss aber nicht alle Änderungen enthalten, und kann auch Änderungen zurücknehmen, die in dem vorhandenen CREATE-Script nicht enthalten sind.

Schließlich kann noch das EER-Model exportiert werden. Das ist in 4 Formaten möglich: "PNG", "SVG", "Single-Page PDF" und "Single-Page PostScript". Entsprechende Menü-Punkte sind unter "File -> Export" zu finden.

Problembehebung

Programm bleibt bei Splashscreen hängen

Wenn MySQL Workbench beim Programmstart hängenbleibt und die CPU mit ~100% belastet, kann man etwas "nachhelfen", indem man Alt-F4 drückt. Der Splashscreen sollte verschwinden und das Hauptfenster erscheinen.

ubuntuusers.local › WikiMySQL Workbench