Wann ist Flush Privileges in MySQL wirklich notwendig?
Wenn ich neue Tabellen und einen dazugehörigen Benutzer erstelle, rufe ich normalerweise nur die folgenden Befehle auf:
CREATE DATABASE mydb;
GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY "mypassword";
Ich musste noch nie den Befehl FLUSH PRIVILEGES
verwenden, nachdem ich die beiden vorherigen Befehle ausgeführt hatte. Die Benutzer können sich anmelden und ihre Datenbank verwenden und PHP-Skripte ausführen, die sich problemlos mit der Datenbank verbinden. Dennoch sehe ich diesen Befehl in fast jedem Tutorial, das ich mir ansehe.
Wann ist der Befehl FLUSH PRIVILEGES
wirklich notwendig und wann ist er unnötig?
45
3
Privilegien, die durch die Option GRANT zugewiesen werden, benötigen kein FLUSH PRIVILEGES, um wirksam zu werden - der MySQL-Server wird diese Änderungen bemerken und die Grant-Tabellen sofort neu laden.
Aus der MySQL-Dokumentation:
TL;DR
Sie sollten
FLUSH PRIVILEGES;
nur verwenden, wenn Sie die Grant-Tabellen direkt mit Anweisungen wieINSERT
,UPDATE
oderDELETE
ändern.Um nur einige Beispiele zu nennen. Nehmen wir an, Sie ändern das Passwort für einen Benutzer namens 'alex'. Sie können dieses Kennwort auf mehrere Arten ändern. Zum Beispiel:
Hier haben Sie UPDATE verwendet. Wenn Sie INSERT, UPDATE oder DELETE direkt auf Grant-Tabellen anwenden, müssen Sie FLUSH PRIVILEGES verwenden, um die Grant-Tabellen neu zu laden.
Oder Sie können das Passwort wie folgt ändern:
Hier ist es nicht notwendig, "FLUSH PRIVILEGES;" zu verwenden; Wenn Sie die Berechtigungstabellen indirekt mit Anweisungen zur Kontenverwaltung wie GRANT, REVOKE, SET PASSWORD oder RENAME USER ändern, bemerkt der Server diese Änderungen und lädt die Berechtigungstabellen sofort wieder in den Speicher.