MariaDB Grundkurs

Benutzerverwaltung in der Eingabeaufforderung

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die Eingabeaufforderung stellt effiziente Funktionen für die Benutzerverwaltung in MariaDB zur Auswahl. Diese Variante vereinfacht es, Prozesse zu automatisieren sowie mehrere Benutzer zu verwalten.

Transkript

Die Benutzerverwaltung mit MariaDB kann auf unterschiedliche Weise und natürlich auch mit unterschiedlichen Clients erfolgen. Die eine Variante ist mit der MySQL Workbench, die andere mit phpMyAdmin oder aber über den MySQL-Client. Und mit dem letzteren, möchte ich einmal beginnen Ihnen in diesem Video zu demonstrieren, wie Sie einen Benutzer einrichten und wie das Ganze vonstattengeht. Das hat diverse Vorteile, wenn sie solche Prozesse automatisieren möchten oder gleichzeitig auch mehrere Benutzer verwalten möchten. Denn unter den grafischen Oberflächen haben Sie im Prinzip, natürlich auch die SQL-Statements, also da würde das genauso gehen. Aber Sie haben da auf der grafischen Oberflächenseite die Möglichkeit natürlich immer nur einen User zu behandeln. So, schauen wir uns einmal an, ich habe mich in den MariaDB-Client eingeloggt, in MySQL oder umgedreht mit dem MySQL-Client in MariaDB eingeloggt. Und habe mir alle Datenbanken, die existieren einmal ausgeben lassen und ich habe hier eine Datenbank importiert mit dem Namen Newssystem. Und auf Newssystem möchte ich jetzt einen speziellen User einmal einrichten. Und zunächst einmal, da wir das als Administrator machen müssen und auch eben in MySQL speichern müssen, benötigen wir die Datenbank MySQL, also die Verwaltungsdatenbank. und da müssen wir hinein wechseln, mit dem Befehl "Use". So, und der Befehl, um einen neuen Benutzer anzulegen, der heißt "GRANT". Und mit "ALL ON" setze ich alle Rechte auf, also ich gebe ihm alle Rechte auf die Datenbank Newssystem und dort enthalten auf alle Tabellen. So, und dann kommt einfach die Eingabe eines Namens und das kann man, ich mache es jetzt mal, in Anführungsstrichelchen setzen, so in der Form. Genauso wie beim Host, das brauchen Sie aber theoretisch nur, wenn, ja, die Namen, Sonderzeichen oder dergleichen beinhalten. So, und das Ganze wird dann mit einem Kennwort vergeben. So, und das heißt "IDENTIFIED BY" und jetzt geben Sie quasi ein Kennwort ein, und ich verwende mal hier "'pass123'", also auch nicht sonderlich sinnvoll. Und setze das auch vorsichtshalber in Anführungsstriche, denn es kann ja sein, dass gerade bei Kennwörtern da kommen eine Menge Sonderzeichen oder sollten drin vorkommen und in dem Moment macht das Sinn. So, und wenn ich diesen Befehl abschicke, dann ist der Benutzer bereits angelegt. Und, ja, wenn ich mich auslogge und dann einmal wieder einlogge, diesmal aber nicht als "root", sondern als Benutzer "michael" mit dem Kennwort "pass123", so, dann sieht man ich komme in die Datenbank hinein. Und am besten fällt es auf, wenn ich mir nun die Schemas ausgeben lasse, dass ich nun nur noch Zugriff auf die vorhandene Testdatenbank habe, auf ein Information-Schema, das kann man nicht ausschalten und auf die eine Datenbank, die freigegeben ist, nämlich das Newssystem. Und so soll es sein, so haben Sie einen Benutzer angelegt, der quasi nur Zugriff auf eine Datenbank hat und dann eben, allerdings Vollzugriff, auf alle Tabellen innerhalb dieser Datenbank. Schauen wir uns kurz an, was jetzt wirklich in der Datenbank MySQL passiert ist. Und dafür logge ich mich erstmal wieder aus und als Admin wieder ein, dann in die Tabelle MySQL. So, und hier gib es zwei Tabellen, die jetzt betroffen sind von der Neuanlage des Users. Und da lasse ich mir mal zwei Spalten ausgeben, also ich führe eine Projektion durch von "host, user, select_priv", dafür steht das, aus der Tabelle "user". Und damit wir jetzt nicht alle Benutzer angezeigt bekommen, selektiere ich das Ganze auf meinen Vornamen auf den User "michael" und lasse das mal ausgeben. So und das Gleiche mache ich nochmal mit den zweiten Tabelle, beziehungsweise kann das eigentlich direkt recht schnell ändern. denn wir brauchen nur eine zusätzliche Spalte, das wäre die Spalte "DB" und die Tabelle ist nicht "user", sondern die Tabelle ist "db". So und wenn ich das abschicke, sieht man jetzt zwei Tabellen, die betroffen sind durch die Neuanlage des Benutzers "michael". Die erste Tabelle, die, also die Tabelle "user", die sagt, zunächst mal aus, es gibt ein Benutzer "user", ein Benutzer "michael", der über den Host "localhost" zugreifen kann, der hat aber keine Rechte hier, das "N" steht für "No" und diese Rechte, diese "privilege", die hier gegeben sind, die beziehen sich auf den gesamten Datenbankserver, also sowas, wie globale Rechte. Und die habe ich Ihnen nicht gegeben. Während in der Tabelle "db", das gleiche nochmal drin steht, also auch wieder der User "michael", der vom "localhost" drauf zugreifen kann, aber diesmal auf die Tabelle "newsystem" und darauf dort hat er alle Rechte auf die Tabelle, also nahezu alle Rechte. wenn Sie einen User anlegen mit, also diesen GRANT-Befehl, dann müssen Sie nicht unbedingt schreiben "GRANT ALL ON", Sie können ihm auch einzelne Befehle, die hier durchführen kann, quasi auswählen, also zum Beispiel können Sie ihm sagen, der darf sich Daten anzeigen mit dem Select-Befehl, der darf Daten eintragen mit "INSERT", aber nicht mehr. Und dann würde er jetzt zwar auch Rechte auf die Datenbank"newsystem" haben aber nur mit zwei Befehlen, beziehungsweise mit zwei Varianten. Und somit können Sie das von Anfang an direkt bestimmen. Die Änderung eines solchen Befehls geht allerdings jetzt so, ohne weiteres nicht vonstatten, denn das kann man nur machen, wenn der User noch nicht existiert. Um nun zu schauen, welche Rechte ein existierender Benutzer überhaupt hat, gibt es auch einen sehr schönen kurzen Befehl und der heißt "ShOW GRANTS", also zeige mir alle Rechte für den Benutzer, also vo dem Benutzern "michael" vom Host "localhost" So und dann sieht man, da bekomme ich dann einmal die Information, dass ein Kennwort vergeben wurde und das eben die Rechte auf die Datenbank "newssystem" vergeben wurde und zwar alle Privilegien. Und wenn ich jetzt im Nachhinein zum Beispiel feststelle, nah, das möchte ich eigentlich gar nicht, dann kann ich ihn mit REVOKE Rechte auch wieder entziehen. Also zum Beispiel mache das mal ganz extrem, ich erziehe ihn jetzt wieder alle Rechte und da gib es genauso, wie bei GRANT, auch beim REVOKE mit dem Schlüsselwörtchen "REVOKE ALL ON", die gleiche Möglichkeit "newssystem" und dann auf alle Tabellen, die ich angelegt habe, "FROM michael@localhost", also es ist ein bisschen meiner Meinung nach einmal steht da vor, dann wieder "FROM" also da muss man ein bisschen aufpassen, dass man da jetzt sich nicht verschreibt und dann kann ich mir die Rechte nochmal angehen lassen und da sieht man jetzt, es gibt einen User, das sehe ich, der ist auch kennwortgeschützt, ganz nebenbei mal Sie sehen, ich kann das Kennwort "Pass 123" gar nicht sehen als Administrator. Das ist datenschutzrechtlich wirklich sehr gut gelöst, also dass ich sehe, da ist ein Kennwort vergeben, ich kann aber nicht erkennen, welches das ist, weil das hier in der Datenbank verschlüsselt abgelegt wird. Natürlich habe ich als Admin das in der Form, wie ich Ihnen das gezeigt habe, angelegt, aber Sie kennen vielleicht auch die Information "Bitte ändern Sie Ihr Kennwort", das wäre dann in der Form möglich und wenn man so was, zum Beispiel automatisiert über PHP-Scripte macht, dann gibt es da auch weitere Möglichkeiten wirklich Kennworte zu generieren, wo weder der Admin noch irgendjemand anderes außer der betreffenden Person, die Information drüber hat. Ja und um jetzt diesen User "michael" wieder Rechte zu geben, kann ich den Befehl "GRANT", zum Beispiel "SELECT, INSERT" eintragen und dann wieder gleiche Variante "ON" auf die Datenbank "newssystem", dann "TO michael@localhost", so, das wieder ausgeben lassen, dann sieht man jetzt steht dort nicht, dass er alle Rechte auf die Datenbank hat und eben nur die zwei, die gerade zugewiesen worden. Jetzt haben wir schon an einem Benutzer eine Menge Informationen geändert oder Rechte geändert und wenn Sie das hier in den MySQL-Client machen, um ganz sicher zu sein, dass bei den Veränderungen, die Sie durchführen, diese Veränderungen auch unmittelbar gültig sind, sollten Sie diese rechte Tabellen noch einmal durch laden. und da gibt es einen speziellen Befehl für, der heißt "FLISH PRIVILEGES" so und dazu geschrieben und da passiert nicht viel, aber in dem Moment, wenn Sie den Befehl abschicken, werden die rechte Tabelle von Seiten "MariaDB" noch einmal geladen und aktualisiert. Das heißt, ab spätestens diesen Befehl gilt das, was dort steht. Ansonsten könnte es passieren, wenn Sie jetzt zum Beispiel einem User Rechte entzogen haben, dass die erst zeitversetzt gültig werden und in der Zwischenzeit kann er dann noch Diverse Dinge durchführen. Zum Abschluss nehmen wir noch das Beispiel, dass Sie ein vorhanden User auch wieder entfernen möchten und das ebenfalls hier über den MariaDB MySQL-Client. Und da würde ich, wie folgt vorgehen, das ist zwar nicht dringend notwendig, denn, wenn Sie Daten aus Tabelle löschen, sind die zunächst mal weg aber ich finde es einfach übersichtlicher, wenn ich zunächst mal alle Rechte die ein User hat und dem Falle auf die Tabelle "newssystem", beziehungsweise Datenbank "newssytem" und die entziehe ich dem User als erstes und schicke diesen Befehl ab. Das heißt, er kann jetzt in dem Moment schon nichts mehr machen und um ganz sicher zu sein, kommt hier wieder der Befehl dann der Rechte-Tabelle, die durchgeladen werden, und im Anschluss, also jetzt kann er schon nichts vertun, jetzt bin ich in Ruhe dran, den Rest zu beseitigen von dem User und da würde ich dann die beiden Tabellen, in die Einträge vorgenommen wurden, einfach aufgreifen und den User raussuchen, also "DELETE FROM User WHERE User=michael" und wenn Sie dann einen weiteren Michael drin haben, um ganz sicher zu sein, dass es auch wirklich der vom Localhost ist, kann man das zum Beispiel so kombinieren, ja und der Datensatz, der wird gelöscht, da unten sehen wir es, eine Zeile, die wurde gelöscht oder ist betroffen und da jetzt normalerweise in der Datenbank DB noch etwas drin stehen könnte, wäre eventuell, wenn Sie diesen REVOKE-Befehl nicht verwenden. Dann müssten Sie das Gleiche nochmal machen auf die Datenbank DB. Also ich kürze es jetzt mal gerade ab, wo der User Michael betroffen ist von. So und Sie sehen hier ist aber keine Zeile jetzt betroffen, weil wir den REVOKE-Befehl im Vorfeld angewendet haben. Also schenken Sie sich den REVOKE-Befehl, dann müssen Sie zwei DELETES durchführen, also die Tabelle "User" und die Tabelle "db", also gegebenenfalls. Es kann ja auch sein, dass es ein User ist, der nur globale Rechte hat und nicht speziell auf eine Datenbank, dann wäre auch der zweite Befehl uninteressant. Sie merken aber, warum gerade mit REVOKE das einen Vorteil hat, weil über REVOKE muss ich nicht so sehr nachdenken. Ich entziehe einfach dem User die Rechte auf die Datenbank und würde dann nur noch den User entfernen. Schauen wir uns kurz noch an, wenn ich mich jetzt wieder auslogge und dann beispielsweise als Benutzer Michael im Anschluss einloggen möchte, so, dann gebe ich mein Kennwort ein, "pass123", Nachdem da also alle Rechte entzogen sind, könnten Sie jetzt ausprobieren, sich mit dem User Michael wieder einzuloggen. Auch hier, nachdem Sie die DELETE-Befehle verwendet haben, bitte vergessen Sie dort nicht den FLUSH-Befehl, denn es kann auch hier immer wieder passieren, dass die Rechte noch eine Zeit lang vorhanden sind, und wenn Sie das dann probieren würden, dann wäre eben entsprechend der User noch aktiv, obwohl Sie ihn gelöscht haben. Also "FLUSH PRIVILEGES" immer zum Schluss durchführen und wenn Sie es dann ausprobieren, dann werden Sie feststellen, können Sie sich als User, den sie angelegt haben, nicht mehr einloggen. Und damit wissen Sie, wie Sie einen User anlegen und bearbeiten, wie Sie Rechte entziehen und wieder zuteilen können und wie Sie diesen User sauber aus Ihrem System entfernen mit dem MySQL-Client auf dem Datenbank-Server MariaDB.

MariaDB Grundkurs

Sehen Sie, wie Sie den populären Datenbankserver einrichten und für erste eigene Projekte nutzen.

4 Std. 41 min (44 Videos)
Derzeit sind keine Feedbacks vorhanden...
Software:
MariaDB MariaDB 10.1
Exklusiv für Abo-Kunden
Erscheinungsdatum:29.03.2016
Aktualisiert am:08.05.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!