Um mit der Bearbeitung von Privilegien in MySQL zu beginnen, müssen Sie sich zuerst bei Ihrem Server anmelden und dann eine Verbindung zu mysql
herstellen Klient. Normalerweise möchten Sie sich mit root
verbinden oder welches Konto auch immer Ihr primäres, anfängliches „Superuser“-Konto ist, das während der gesamten MySQL-Installation vollen Zugriff hat.
Typischerweise die root
Benutzer wurde bei der Installation von MySQL ein Authentifizierungspasswort zugewiesen, aber wenn das nicht der Fall ist, sollten Sie Schritte unternehmen, um Ihre Sicherheit zu erhöhen, indem Sie root
hinzufügen Passwörter wie in der offiziellen Dokumentation dargestellt.
Herstellen einer Verbindung zum MySQL-Befehlszeilentool
Für dieses Beispiel gehen wir von root
aus ist das primäre MySQL-Konto. Um mit der Verwendung des MySQL-Befehlszeilentools (mysqlcli
), verbinden Sie sich als root
mit Ihrem Server user, geben Sie dann mysql
aus Befehl:
$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
Bei Erfolg sehen Sie eine Ausgabe über Ihre MySQL-Verbindung und sehen sich dem mysql
gegenüber Eingabeaufforderung.
Hinweis:Falls Sie sich als root
nicht direkt mit dem Server verbinden können Benutzer, bevor Sie sich mit mysql
verbinden können Sie den Benutzer angeben, mit dem Sie sich verbinden möchten als durch Hinzufügen von --user=
Flagge:
$ mysql --user=username
Privilegien gewähren
Sie befinden sich nun im mysqlcli
Eingabeaufforderung müssen Sie nur den GRANT
ausgeben Befehl mit den notwendigen Optionen, um die entsprechenden Berechtigungen anzuwenden.
Privilegientypen
Der GRANT
Der Befehl ist in der Lage, eine Vielzahl von Privilegien anzuwenden, von der Fähigkeit zum CREATE
Tabellen und Datenbanken, lesen oder schreiben Sie FILES
, und sogar SHUTDOWN
der Kellner. Es gibt eine breite Palette von Flags und Optionen, die für den Befehl verfügbar sind, also möchten Sie sich vielleicht damit vertraut machen, was GRANT
ist können Sie tatsächlich tun, indem Sie die offizielle Dokumentation durchsuchen.
Datenbankspezifische Berechtigungen
In den meisten Fällen erteilen Sie MySQL-Benutzern Berechtigungen basierend auf der jeweiligen database
auf das Konto Zugriff haben sollte. Dies ist zum Beispiel gängige Praxis für jede eindeutige MySQL database
auf einem Server, um seinen eigenen eindeutigen user
zu haben damit verbunden, so dass nur ein einziger user
Authentifizierungszugriff auf eine einzige database
hat und umgekehrt.
Um GRANT ALL
Privilegien für einen user
, wodurch dieser Benutzer die volle Kontrolle über eine bestimmte database
erhält verwenden Sie die folgende Syntax:
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
Mit diesem Befehl haben wir MySQL angewiesen:
GRANT
diePRIVILEGES
vom TypALL
(also alles natürlich). Hinweis:Die meisten modernen MySQL-Installationen benötigen die optionalenPRIVILEGES
nicht Schlüsselwort.- Diese Berechtigungen gelten für
database_name
und es gilt für alle Tabellen dieser Datenbank, was durch.*
angezeigt wird das folgt. - Diese Privilegien werden
username
zugewiesen wenn dieserusername
wird lokal durchgeschaltet, wie durch@'localhost'
angegeben . Um einen gültigen Host anzugeben, ersetzen Sie'localhost'
mit'%'
.
Anstatt alle Berechtigungen für die gesamte Datenbank bereitzustellen, möchten Sie vielleicht den tolkien
geben Benutzer nur die Möglichkeit, Daten zu lesen (SELECT
) von den authors
Tabelle der books
Datenbank. Das wäre einfach so zu bewerkstelligen:
mysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
Erstellen eines weiteren Superusers
Obwohl dies nicht besonders sicher ist, möchten Sie in einigen Fällen möglicherweise einen weiteren „Superuser“ erstellen, der ALLE Berechtigungen für ALLE Datenbanken auf dem Server hat. Das kann ähnlich wie oben durchgeführt werden, aber durch Ersetzen des database_name
mit dem Platzhalter Sternchen:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
Jetzt tolkien
hat die gleichen Privilegien wie der standardmäßige root
Konto, Vorsicht!
Speichern Ihrer Änderungen
Stellen Sie als letzten Schritt nach jeder Aktualisierung der Benutzerrechte sicher, dass Sie die Änderungen speichern, indem Sie FLUSH PRIVILEGES
ausgeben Befehl aus dem mysql
Eingabeaufforderung:
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)