MySQL GRANT-Anweisung
Die Anweisung GRANT
in MySQL wird verwendet, um den MySQL-Benutzerkonten Berechtigungen zuzuweisen. Sie legt fest, welche Operationen Benutzer mit Datenbankobjekten wie Tabellen und Ansichten durchführen können, und gewährleistet so einen kontrollierten Zugriff auf die Datenbank.
Verwendung
Die Anweisung GRANT
wird verwendet, wenn du bestimmten Benutzern die Berechtigung geben musst, bestimmte Arten von SQL-Operationen auszuführen. Es hilft dabei, Benutzerrechte effizient und sicher zu verwalten.
GRANT privileges
ON database_name.table_name
TO 'user'@'host'
[IDENTIFIED BY 'password'];
In dieser Syntax sind privileges
die gewährten Berechtigungen, database_name.table_name
gibt den Bereich an, user
ist der MySQL-Benutzername und host
ist der Ort, von dem aus sich der Benutzer verbindet. Beachte, dass die IDENTIFIED BY 'password'
Klausel nur bei der Erstellung eines neuen Benutzers anwendbar ist. In MySQL 8.0 und höher wird normalerweise empfohlen, CREATE USER
gefolgt von GRANT
für die Erstellung von Benutzern und die Zuweisung von Berechtigungen zu verwenden.
Beispiele
1. Gewährung grundlegender Privilegien
GRANT SELECT, INSERT
ON mydb.mytable
TO 'user1'@'localhost';
Dieses Beispiel gewährt die Rechte SELECT
und INSERT
auf mydb.mytable
für user1
, das sich von localhost
aus verbindet.
2. Alle Berechtigungen für eine Datenbank gewähren
GRANT ALL PRIVILEGES
ON mydb.*
TO 'user2'@'192.168.1.1';
Hier erhält user2
alle Rechte für die gesamte Datenbank mydb
vom Host 192.168.1.1
.
3. Privilegien mit Passwort erteilen
GRANT SELECT, UPDATE
ON mydb.mytable
TO 'user3'@'%' IDENTIFIED BY 'securepassword';
Diese Anweisung gewährt SELECT
und UPDATE
Privilegien auf mydb.mytable
bis user3
von einem beliebigen Host (%
) aus, wobei ein bestimmtes Passwort festgelegt wird. Die Verwendung von %
ermöglicht Verbindungen von jedem Host aus, was Auswirkungen auf die Sicherheit haben kann.
Zusätzliche Informationen
Globale Privilegien
Um globale Berechtigungen zu gewähren, die für alle Datenbanken gelten, verwendest du die ON *.*
Syntax. Dies gewährt die angegebenen Privilegien global.
Entzug von Privilegien
Um Privilegien zu entziehen, verwendest du die Anweisung REVOKE
:
REVOKE privileges
ON database_name.table_name
FROM 'user'@'host';
Damit werden dem Benutzer die angegebenen Berechtigungen entzogen.
Tipps und bewährte Praktiken
- Privilegien einschränken. Gewähre den Nutzern nur die notwendigen Berechtigungen, um Sicherheitsrisiken zu minimieren.
- Verwende bestimmte Hostnamen. Wenn möglich, gib Hostnamen oder IP-Adressen an, um den Zugang zu beschränken, anstatt
%
für alle Hosts zu verwenden. - Verwalte deine Passwörter sicher. Verwende beim Einrichten von Benutzerkonten immer sichere, eindeutige Passwörter.
- Überprüfe regelmäßig die Berechtigungen. Überprüfe regelmäßig und entziehe unnötige Privilegien, um optimale Sicherheit zu gewährleisten. Verwende die Tabelle
mysql.user
oder die entsprechenden Ansichten des Informationsschemas, um die bestehenden Benutzerrechte zu überprüfen. - Dokumentänderungen. Führe Aufzeichnungen über alle
GRANT
ausgestellten Bescheinigungen, damit du die Genehmigungen leicht nachverfolgen kannst.