Vraag Hoe kan ik gebruikersrechten in MySQL tonen?


Ik weet dat ik gebruikersrechten op de volgende eenvoudige manier kan instellen:

grant all on [database name].[table name] to [user name]@[host name];

Maar hoe kan ik bestaande rechten zien?

Ik moet gegevens zien die vergelijkbaar zijn met diegene die in de subsidie ​​worden gebruikt. Met andere woorden, ik wil weten dat een bepaalde gebruiker een bepaalde toegang heeft tot een bepaalde tabel van een gegeven database van een bepaalde host.

Hoe kan ik het krijgen?


51
2018-02-27 21:45


oorsprong




antwoorden:


Het bevel SHOW GRANTS [FOR user] is wat je zoekt. Zien hier voor meer informatie.


58
2018-02-27 22:10





Hier is de MySQL-documentatie voor SHOW GRANTS:

SHOW GRANTS [FOR user]

Deze verklaring bevat de GRANT-instructie of verklaringen die moeten worden afgegeven om de rechten te dupliceren die zijn verleend aan een MySQL-gebruikersaccount. Het account heeft dezelfde naam als voor de GRANT-instructie; bijvoorbeeld 'jeffrey' @ 'localhost'. Als u alleen het gebruikersnaamgedeelte van de accountnaam opgeeft, wordt een hostnaamgedeelte van '%' gebruikt. Zie Sectie 12.5.1.3, "GRANT-syntaxis" voor meer informatie over het opgeven van accountnamen.

mysql> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+

Om een ​​lijst weer te geven van de rechten die zijn toegekend aan het account dat u gebruikt om verbinding te maken met de server, kunt u een van de volgende verklaringen gebruiken:

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();

Vanaf MySQL 5.0.24 wordt, als TOON AFGIFTES VOOR CURRENT_USER (of een van de equivalente syntaxis) wordt gebruikt in DEFINER-context, zoals binnen een opgeslagen procedure die is gedefinieerd met SQL SECURITY DEFINER), de weergegeven subsidies die van de definiërings- en niet de invoker.

SHOW GRANTS geeft alleen de rechten weer die expliciet zijn toegekend aan het genoemde account. Mogelijk zijn andere rechten beschikbaar voor het account, maar deze worden niet weergegeven. Als een anoniem account bijvoorbeeld bestaat, kan het genoemde account mogelijk zijn rechten gebruiken, maar SHOW GRANTS zullen deze niet weergeven.

SHOW GRANTS vereist het SELECT-privilege voor de mysql-database.


36
2018-02-27 21:46