MySQL/Startup Guide/de

Dieses Dokument hilft die MySQL Datenbank einzurichten und zu benutzen.

Hintergrund
MySQL ist ein populärer Datenbankserver der in verschiedensten Programmen benutzt wird. SQL steht im Englischen für (S)tructured (Q)uery (L)anguage, auf Deutsch in etwa Strukturierte Abfrage Sprache. Dieses SQL wird für die Kommunikation zwischen Server und anderen Programmen benutzt. Zusätzlich hat MySQL eigene Erweiterungen der Standard SQL-Funktionen um extra Deatures bereit zu stellen. In diesem Dokument wird die minimale MySQL Installation beschrieben, sowie die Einrichtung von Datenbasen, Tabellen und neuen Benutzern. Starten wir mit der Installation.

MySQL Installation
Zuerst ist das Programmpaket MySQL auf dem Rechner zu installieren. Für spezielle Features sind die entsprechenden USE-Flags zu setzen.

Am Ende der Installation wird folgende Nachricht angezeigt:

Da dies eine neue Installation ist, führen wir den Befehl aus. Sie müssen bei der Konfiguration der MySQL-Datenbank  drücken, wenn Sie dazu aufgefordert werden. Die Konfiguration richtet die Haupt-MySQL-Datenbank ein, die administrative Informationen wie Datenbanken, Tabellen, Benutzer, Berechtigungen und vieles mehr enthält. Die Konfiguration empfiehlt, dass Sie Ihr Root-Passwort so schnell wie möglich ändern. Wir werden das definitiv tun, sonst könnte jemand zufällig kommen und unseren Standard-Setup MySQL Server hacken.

Einige MySQL spezifische Informationen, die nicht den EBuild betreffen, wurden von hier entfertn, um dieses Dokument so konsistent wie möglich zu halten.

Das config-Skript hat bereits die Befehle ausgedruckt, die wir ausführen müssen, um unser Passwort einzurichten.

Wenn Sie OpenRC verwenden, geben Sie diesen Befehl ein:

Bei der Benutzung von systemd kommt das folgende Kommando zur Anwendung:

Danach ist das root Passwort zu setzen:

Sie können nun testen, dass Ihr Root-Passwort erfolgreich konfiguriert wurde, indem Sie versuchen, sich bei Ihrem MySQL-Server anzumelden:

Die Option  gibt den Datenbank-Benutzer an, die Option   spezifiert den Host. Wird kein Server angegeben wird  verwendet. Mit der Option  wird die Passwortabfrage aktiviert. Nun erscheint die  Eingabeaufforderung. Hier werden die Kommandos an den  Server abgesetzt. Da wir nun als Root am Datenbankserver angemeldet sind, können wir mit dem setup des Servers beginnen.

Erstellen einer Datenbank
Wir sind eingeloggt und die mysql Eingabeaufforderung wird angezeigt. Zuerst lassen wir uns die aktuell vorhanden Datenbasen anzeigen. Dafür benutzen wir den  Befehl.

Obwohl schon eine Test-Datenbank eingerichtet ist, wollen wir troztdem unsere eigene Datenbank erstellen. Datenbanken werden mit dem Befehl  erzeugt. Unsere Datenbank soll den Namen "gentoo" erhalten.

Aus der Antwort des Datenbank Servers ist ersichtlich, dass der Befehl ohne Fehler ausgeführt wurde. In unserem Fall wurde 1 Zeile verändert. Die ist ein Verweis auf die Hauptdatenbank, welche eine Liste der vorhandenen Datenbanken vorhält. Sie müssen sich nicht zu viele Gedanken über die Hintergrunddetails machen. Die letzte Zahl ist, wie schnell die Abfrage ausgeführt wurde. Wir können überprüfen, ob die Datenbank erstellt wurde, indem Sie den Befehl  erneut ausführen.

In der Tat wurde unsere Datenbank erstellt. Um mit dem Erstellen von Tabellen für unsere neue gentoo Datenbank arbeiten zu können, müssen wir sie als unsere aktuelle Datenbank auswählen. Dazu verwenden wir den Befehl. Der Befehl  übernimmt den Namen der Datenbank, die Sie als aktuelle Datenbank verwenden möchten. Eine weitere Möglichkeit besteht darin, sie nach dem Schalter  auf die Befehlszeile zu setzen. Gehen wir weiter und wechseln in die gentoo Datenbank.

Die aktuelle Datenbank ist nun unsere erzeugte Gentoo Datenbank und wir werden nun einige Tabellen erstellen und diese mit Daten füllen.

Erzeugen einer Tabelle
Die Gliederung von MySQL ist wie folgt aufgebaut: Datenbanken, Tabellen, Records und Felder. Datenbanken beinhalten Tabellen, Tabellen halten Records zusammen, Records sind aus Felder zusammen gesetzt. Die Felder enthalten die akutellen Informationen. Diese Gliederung lässt den Benutzer die Wahl wie auf die Informationen zugegriffen werden können. Bis hierher wurden nur Datenbanken benutzt, nun sind Tabellen an der Reihe. Eine Auflistung der Tabellen erhält man mit. Noch gibt es keine Tabellen in unserer Datenbank, wie die Ausgabe des Kommandos zeigen wird:

Das bedeutet, dass wir einige Tabellen erstellen müssen. Dazu verwenden wir den Befehl. Dieser Befehl unterscheidet sich jedoch deutlich von dem einfachen Befehl. Dieser Befehl nimmt eine Liste von Argumenten entgegen. Das Formular ist wie folgt:

table_name ist der Name der Tabelle, die wir erstellen möchten. In diesem Fall erstellen wir eine Tabelle mit dem Namen. Diese Tabelle enthält den Namen des Entwicklers, E-Mail-Adresse und Job.

field_name enthält den Namen des Feldes. Wir haben in diesem Fall 3 erforderliche Namen: Name, E-Mail und Job.

Der field_data_type legt fest, welche Art von Information in dem entsprechenden Feld gespeichert werden soll. Die verschiedenen verfügbaren Formate finden Sie in der MySQL-Dokumentation. Für unsere Zwecke verwenden wir den Datentyp  für alle unsere Felder. ist einer der einfachsten Datentypen, wenn es um die Arbeit mit Strings geht.

size gibt an, wie viel Daten ein einzelnes Feld speichern wird. In diesem Fall verwenden wir 128. Dies bedeutet, dass das Feld  -Daten mit 128 Byte haben kann. Sie können sich dies vorläufig als 128 Zeichen vorstellen, obwohl es eine etwas technischere Erklärung gibt, die die obige Seite Ihnen bieten wird. Jetzt, wo wir wissen, wie wir die Tabelle erstellen werden, machen wir es.

Unsere Tabelle wurde erzeugt. Eine Liste der Tabellen zeigt uns der Befehl  :

Da ist unsere Tabelle, es fehlen jedoch Informationen über die einzelnen Felder. Dafür verwenden wir den Befehl  (oder  ), der den Namen der Tabelle als Argument verwendet. Mal sehen, was uns das für unsere Entwicklertabelle bringt.

Dies zeigt die verschiedenen Felder und ihre Typen. Es zeigt auch ein paar zusätzliche Attribute, die den Rahmen dieses Howto sprengen. Weitere Informationen finden Sie im MySQL Referenzhandbuch. Wir haben jetzt eine Tabelle, mit der wir arbeiten können. Lass uns im nächsten Schritt die Tabelle mit Daten füllen.

Füllen unserer MySQL Datenbank
Wir fügen Daten mittels  Befehl ein. Ähnlich wie, hat er ein spezifisches Format.

Dieser Befehl wird verwendet, um einen Datensatz in table einzufügen. Nach dem Tabellennamen kann die Aufzählung der Spalten folgen, in die Daten eingefügt werden sollen. Auf  folgen die Werte, die Sie in die Tabelle einfügen möchten. Sie können die Liste der Spalten weglassen, wenn Sie genau einen Wert für jede Spalte angeben, und wenn Sie die Werte in der gleichen Reihenfolge wie die Spalten aufführen. In diesem Fall möchten wir Daten in die Entwicklertabelle einfügen. Lassen Sie uns Beispieldatensätze einfügen:

Der Rückgabecode zeigt an, dass der Datensatz korrekt eingefügt worden ist. Was ist, wenn wir mehr Informationen eingeben möchten als nur einen Datensatz? Hier kommt der Befehl  ins Spiel. Dieser lädt Datensätze aus einer tabulatorgetrennten Datei. Versuchen wir das, indem wir eine Datei in unserem Home-Verzeichnis mit den Datensätzen bearbeiten. Wir nennen diese Datei. Hier ein Beispiel:

Der Aufruf von  ist etwas umständlich, im folgenden Beispiel wird die einfachste Form verwendet.

entspricht dem Verzeichnins und Dateiname der verwendet werden soll. ist der Name der Tabelle. In diesem Beispiel ist die Datei und developer ist die Tabelle.

Das hat gut funktioniert. Dies fügt jedoch einfach Datensätze ein und gibt Ihnen keinerlei Kontrolle über MySQL. Viele Webanwendungen verwenden SQL-Skripte, um MySQL schnell und einfach einzurichten. Wenn Sie ein SQL-Skript verwenden möchten, müssen Sie MySQL im Batch-Modus ausführen oder die Datei als Quelle verwenden. Hier ist ein Beispiel für die Ausführung von MySQL im Batch-Modus:

Wie bei  sollte man wissen was  tut. Anderenfalls kann Ihre Datenbank kompromittiert werden! Eine andere Möglichkeit, dies zu erreichen, ist die Verwendung des Befehls. Dieser Befehl führt mysql-Befehle aus einer SQL-Datei im interaktiven Modus von mysql aus. So erhalten Sie eine SQL-Datei:

Wenn Sie eine Webanwendung sehen, die eine SQL-Datei ausführen soll, können die beiden obigen Befehle zum Ausführen dieser Aufgabe verwendet werden. Wir haben unseren Tabellenaufbau, wollen wir also einaml unsere Felder überprüfen? Um unsere Tabelle zu durchsuchen benutzen wir Abfragen.

Abfragen zum Durchsuchen von MySQL Tabellen
Abfragen sind eines der Hauptmerkmale jeder SQL-Datenbank. Sie helfen uns, Daten in unseren Tabellen in etwas Nützliches zu verwandeln. Die meisten Abfragen werden mit dem Befehl  ausgeführt. Der  -Befehl ist ziemlich komplex, und wir werden nur drei Hauptformen des Befehls in diesem Dokument betrachten.

Werfen wir einen Blick auf die erste Form. Es ist relativ einfach und gibt Ihnen ein Gesamtbild Ihrer Tabelle. Wir werden weitermachen, um zu sehen, welche Daten wir bisher haben.

Wir sehen sowohl die Daten, die wir durch  eingefügt haben, als auch diejenigen, die durch   eingefügt wurden. Sagen wir mal, wir wollen nur den Rekord für Chris White sehen. Wir können dies mit der zweiten Form von select tun, wie unten gezeigt.

Wie erwartet, wurde der von uns gesuchte Eintrag ausgewählt. Nehmen wir an, wir wollten nur den Job und die E-Mail-Adresse der Person kennen, nicht ihren Namen. Wir können dies mit der dritten Form von  tun, wie hier gezeigt.

Diese Methode der Auswahl ist viel einfacher zu verwalten, insbesondere mit größeren Mengen an Informationen, wie wir später sehen werden. Im Moment haben wir als mysql root-Benutzer unbegrenzte Rechte, um mit der MySQL-Datenbank das zu tun, was wir wollen. In einer Serverumgebung kann ein Benutzer mit solchen Berechtigungen ziemlich problematisch sein. Um zu kontrollieren, wer was mit den Datenbanken macht, richten wir Privilegien ein.

Gewähren von Berechtigungen with GRANT
Privilegien erlauben welche Art von Zugriff Benutzer auf Datenbanken, Tabellen, etc haben. In der gentoo-Datenbank ist das MySQL root-Konto das einzige Konto, das aufgrund seiner Berechtigungen darauf zugreifen kann. Lassen Sie uns nun zwei etwas generische Benutzer, guest und admin, erstellen, die auf die gentoo-Datenbank zugreifen und mit den darin enthaltenen Informationen arbeiten. Das Gastkonto wird eingeschränkt. Alles, was man mit diesem konto machen kann, ist Informationen aus der Datenbank zu lesen. admin hat die selbe Kontrolle wie root, aber nur für die gentoo-Datenbank (nicht die Haupt-mysql-Datenbanken). Bevor wir damit beginnen, wollen wir uns das etwas vereinfachte Format des Befehls  genauer ansehen.

Mit dem was wir bisher gelernt haben, kennen wir schon einige Berechtigungen die wir vergeben können:


 * - Gibt alle Berechtigungen für die Datenbank
 * - Erlaubt es Usern Tabellen zu erstellen
 * - Erlaubt es Usern Abfragen an Tabellen zu richten
 * - Erlaubt es Usern Daten in eine Tabelle einzufügen
 * - Erlaubt es Usern die Datenbasen aufzulisten
 * - Der Benutzer hat keine Berechtigungen
 * - Erlaubt es Usern Rechte zu vergeben

Der Benutzer 'admin' aus unserem Beispiel sollte alle Berechtigungen  erhalten. Der Benutzer 'guest' erhält nur einen schreibgeschützten Zugriff, definiert durch.  'gentoo'  ist die Datenbank, für welche die Benutzer diese Berechtigungen erhalten sollen. Das * steht als Paltzhalter für alle Tabellen. Wenn Sie möchten, können Sie den Zugriff pro Tabelle zuteilen.  'user'  ist der Name des Benutzers und  'host'  ist der Hostname, auf den der Benutzer zugreift. In den meisten Fällen ist dies localhost. Schließlich ist  'password'  das Passwort des Benutzers. Jetzt haben wir alle Informationen zusammen um die Benutzer zu erstellen.

Nachdem wir die Benutzer eingerichtet haben, testen wir sie. Zuerst beenden wir mysql durch Eingabe von  an der Eingabeaufforderung:

Wir haben die Benutzer eingerichtet und sind zurück an der Konsole. Lassen Sie uns als diese Benutzer fortfahren.

Testen der Benutzer Zugriffsrechte
Wir werden uns nun als Gastbenutzer anmelden. Dieser kann nur die Berechtigung für, das bedeutet, dass nur Sucanfragen möglich sind. Melden Sie sihc mit dem Gastzugang an.

Jetzt sollten wir die Benutzerbeschränkung(en) testen. Wechseln wir zur gentoo-Datenbank:

Zur Probe werden wir nun etwas tun, wofür wir keine Rechte haben. Wir werden versuchen, eine Tabelle zu erstellen.

Wie Sie sehen können, schlägt diese Funktion fehl, da unser Benutzer nicht über den entsprechenden Zugriff verfügt. Eine Berechtigung, die wir jedoch gewährt haben, ist die Anweisung. Lassen Sie es uns damit versuchen:

Der Befehl ist erfolgreich und wir erhalten einen Einblick in die Möglichkeiten der Benutzerberechtigungen. Wir haben jedoch auch einen Administrator-Account erstellt. Dieser wurde erstellt, um zu zeigen, dass sogar alle Berechtigungen, die Benutzern gewährt werden, immer noch Einschränkungen haben können. Wir werden nun MySQL beenden und uns neu als Administrator einloggen.

Zu Beginn werden wir versuchen, eine neue Datenbank mit unserem Admin-Benutzer zu erstellen. Dieser Admin-Benutzer hat Zugriff auf das root-MySQL-Konto und kann jede Art von Änderung an der ausgewählten gentoo-Datenbank vornehmen. Dadurch wird der Zugriff des Benutzers auf die Hauptdatenbank von MySQL getestet. Denken Sie daran, dass wir nur Berechtigungen für eine bestimmte Datenbank festlegen.

Tatsächlich kann der Admin-Benutzer trotz aller Berechtigungen für die Gentoo-Datenbank keine Datenbanken in der MySQL-Hauptdatenbank erstellen. Wir können jedoch weiterhin das Admin-Konto verwenden, um die Gentoo-Datenbank zu ändern, wie hier anhand dieses Beispieldateneintrags gezeigt.

Der Admin-Benutzer kann nach Belieben auf die Datenbank zugreifen. Jetzt müssen wir manchmal Benutzerrechte einschränken. Die Gründe hierfür können vielfältig sein, von einem problematischen Benutzer bis zu einem pensionierten Mitarbeiter. Werfen wir einen Blick darauf, wie Benutzerberechtigungen mit dem Befehl  widerrufen werden.

Entfernen von Benutzerrechten mittels REVOKE Befehl
Mit dem Befehl  können wir den Zugriff für einen Benutzer verweigern. Wir können entweder den vollen Zugang oder den spezifischen Zugang verweigern. In der Tat ähnelt das Format.

Im Abschnitt zum Befehl  werden die Optionen erklärt. In diesem Abschnitt verweigern wir jedoch den vollen Zugriff auf einen Benutzer. Nehmen wir an, wir finden heraus, dass der Gastaccount einige Sicherheitsprobleme verursacht. Wir beschließen, alle Privilegien zu widerrufen. Wir loggen uns als root ein und führen die notwendigen Änderungen durch.

Wir loggen uns wieder aus und melden uns als Gastbenutzer an.

Obwohl wir uns einloggen können, ist unser Zugang zu Gentoo jetzt nicht mehr möglich.

Und unser problematischer Benutzer kann nicht mehr auf die Gentoo-Datenbank zugreifen. Bitte beachten Sie, dass sich der Benutzer noch anmelden konnte. Das liegt daran, dass sie in der Hauptdatenbank von MySQL bleiben. Werfen wir einen Blick darauf, wie man ein Konto mit  und der MySQL-Benutzertabelle komplett entfernt.

Entfernen von Accounts mit DELETE
Die MySQL-Benutzertabelle ist eine Auflistung aller Benutzer und Informationen über sie. Stellen Sie sicher, dass Sie als root angemeldet sind und die MySQL-Hauptdatenbank verwenden.

Lassen Sie uns nachsehen, welche Tabellen die MySQL-Hauptdatenbank hat.

Die Benutzertabelle ist die Tabelle, nach der wir suchen. Die Benutzertabelle enthält jedoch 30 verschiedene Felder, wodurch sie sehr schwer zu lesen sind. Um das Lesen zu erleichtern, verwenden wir die dritte Version der  -Anweisung. Die Felder, nach denen wir suchen, sind Host und Benutzer.

Jetzt wo wir unsere Informationen haben, können wir den Gastbenutzer entfernen. Dies geschieht mit dem Befehl, die Syntax wird unten gezeigt.

Möglicherweise stellen Sie fest, dass sich die  und  -Anweisungen in ihrem Format gleichen. In diesem Fall lautet das Feld Benutzer und der Wert guest. Dadurch wird der Datensatz in der Benutzertabelle gelöscht, in dem der Benutzer Gast ist und unser Gastbenutzerkonto erfolgreich gelöscht wurde. LAssen Sie uns ides im nächsten Schritt tun:

It seems to have worked ok. Let's test by logging out and attempting to login as our guest user.

Our user is now successfully deleted!

Conclusion
While this guide focuses mainly on setting up MySQL on the command line, a few alternatives are available in GUI form:


 * phpMyAdmin - Popular php based MySQL administration tool.
 * mysqlnavigator - QT frontend to MySQL.
 * gmyclient - A GNOME based MySQL client.
 * knoda - A KDE MySQL client.

This ends the MySQL introductory tutorial. I hope this gives you a better understanding of the basics behind MySQL and getting a database set up.