Ich möchte einen neuen Benutzer in MySQL anlegen und ihm vollen Zugriff nur auf eine Datenbank geben, sagen wir dbTest
, die ich mit einem Befehl wie create database dbTest;
anlege. Mit welchen MySQL-Befehlen kann ich das tun?
Versuchen Sie dies, um den Benutzer zu erstellen:
CREATE USER 'user'@'hostname';
Versuchen Sie dies, um ihm Zugriff auf die Datenbank dbTest
zu geben:
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Wenn Sie den Code/die Website, die auf MySQL zugreift, auf demselben Rechner ausführen, wäre der Hostname localhost.
Und nun die Auflösung.
GRANT" - Mit diesem Befehl können Sie Benutzer anlegen und Rechte für Datenbanken, Tabellen usw. erteilen.
ALLE PRIVILEGES" - Dies bedeutet, dass der Benutzer alle Standardprivilegien hat. Dies beinhaltet jedoch nicht das Privileg, den GRANT-Befehl zu verwenden.
dbtest." - Dies weist MySQL an, diese Rechte für die gesamte dbtest-Datenbank zu verwenden. Sie können das durch bestimmte Tabellennamen oder Speicherroutinen ersetzen, wenn Sie wollen.
TO 'user'@'hostname'- 'user' ist der Benutzername des Benutzerkontos, das Sie erstellen. Hinweis: Sie müssen die einfachen Anführungszeichen einfügen. 'hostname' teilt MySQL mit, von welchen Hosts aus sich der Benutzer verbinden kann. Wenn Sie die Verbindung nur von demselben Rechner aus herstellen wollen, verwenden Sie
localhost`.
IDENTIFIED BY 'password'` - Wie Sie sicher schon vermutet haben, wird hier das Passwort für diesen Benutzer festgelegt.
Melden Sie sich bei MySQL an:
mysql -u root
Erstellen und gewähren Sie nun
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Wenn Sie nur uneingeschränkten Zugriff auf eine Datenbank gewähren wollen (z. B. auf Ihrem lokalen Rechner für eine Testinstanz), können Sie dem anonymen Benutzer den Zugriff wie folgt gewähren:
GRANT ALL PRIVILEGES ON dbTest.* To ''@'hostname'
Dies ist gut für Junk-Daten in der Entwicklung. Tun Sie dies nicht mit Daten, die Ihnen wichtig sind.