Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So gewähren Sie alle Berechtigungen für eine Datenbank in MySQL

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 die PRIVILEGES vom Typ ALL (also alles natürlich). Hinweis:Die meisten modernen MySQL-Installationen benötigen die optionalen PRIVILEGES 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 dieser username 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)