it-swarm.com.de

"GRANT USAGE" kann nicht entfernt werden

Ich habe einige Sachen getestet und Folgendes hinzugefügt:

grant usage on statistics.* to [email protected] identified by 'password';

also jetzt, wenn ich es tue

show grants for [email protected];

Ich kann sehen, dass einer von ihnen ist:

Grants for [email protected]
----------------------------------
GRANT USAGE ON *.* TO 'cptnotsoawesome'@'localhost' IDENTIFIED BY PASSWORD 'somePEW-PEWstring' 

Jetzt möchte ich es entfernen, da ich denke, dass es ein Sicherheitsrisiko ist, also mache ich Folgendes:

REVOKE USAGE ON *.* FROM 'cptnotsoawesome'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Aber es zeigt immer noch, dass USAGE Grant in der Grant-Liste.

Grants for [email protected]
----------------------------------
GRANT USAGE ON *.* TO 'cptnotsoawesome'@'localhost' IDENTIFIED BY PASSWORD 'somePEW-PEWstring' 

Irgendwelche Ideen warum? Was mache ich falsch?

15
Katafalkas

Wenn Sie unter der Haube nur einen Benutzer mit USAGE sehen, wird dieser Benutzer mit deaktivierten globalen Berechtigungen in die Tabelle mysql.user geschrieben.

Sie haben ursprünglich angegeben, dass der Benutzer Folgendes hat:

grant usage on statistics.* to [email protected] identified by 'password'; 

In mysql.user Sollte eine Zeile mit dem MD5-Kennwort und allen globalen Berechtigungen auf N angezeigt werden. Sie sollten auch eine Zeile in mysql.db mit sehen

  • user = 'cptnotsoawesome'
  • Host = 'localhost'
  • db = 'Statistik'
  • alle Privilegien auf DB-Ebene sind auf 'Y' gesetzt.

Sie sollten sie mit dieser Abfrage sehen können

SELECT * FROM mysql.db
WHERE user='cptnotsoawesome'
AND Host='localhost'
AND db='statistics'\G

Wenn Sie den Befehl REVOKE ausgeführt haben, haben Sie einfach die Zeile aus mysql.db Entfernt. Dies hat die Zeile in mysql.user Nicht berührt. Sie können sich also weiterhin bei MySQL anmelden und haben nur die Berechtigungen zum Ausführen

SHOW GLOBAL VARIABLES;
SHOW GLOBAL STATUS;

Wenn es eine Testdatenbank mit dem Namen test oder eine Datenbank mit den ersten 5 Zeichen test_ Gibt (suchen Sie mit SELECT * FROM mysql.db WHERE db LIKE 'test%';), Kann der Benutzer mit nur USAGE die vollen Rechte haben zu den Testdatenbanken. Ich habe darüber in ServerFault Sep 2011 geschrieben .

Wenn Sie die Zeile aus mysql.user entfernen möchten, können Sie entweder ausführen

DROP USER [email protected];

oder

DELETE FROM mysql.user WHERE
WHERE user='cptnotsoawesome'
AND Host='localhost';
FLUSH PRIVILEGES;
20
RolandoMySQLDBA

[~ # ~] Verwendung [~ # ~] bedeutet, dass der Benutzer keine Berechtigungen hat.

You have to use 'DROP USER'. 

drop user [email protected];

Sie können USAGE nicht wirklich widerrufen, ohne den Benutzer zu löschen. USAGE ist ein Privileg auf globaler Ebene.

werfen Sie einen Blick auf Dieser Link .

9
Abdul Manaf

Bitte schauen Sie sich diese Frage an: -

https://stackoverflow.com/questions/2126225/why-is-a-grant-usage-created-the-first-time-i-grant-a-user-privileges

Grundsätzlich verhält sich das USAGE-Privileg wie ein Privileg auf Systemebene, das Sie nicht entfernen können. Es wird intern von MySQL verwendet, sodass Sie das Berechtigungssystem manipulieren können.

2
Kiri