Come posso mostrare i privilegi dell'utente in MySQL?


69

So che posso impostare i privilegi dell'utente nel seguente modo semplice:

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

Ma come posso vedere i privilegi esistenti?

Ho bisogno di vedere dati simili a quelli che vengono utilizzati in concessione. In altre parole, voglio sapere che un determinato utente ha un determinato accesso a una determinata tabella di un determinato database da un determinato host.

Come posso averlo?

Risposte:



51

Ecco la documentazione di MySQL per SHOW GRANTS:

SHOW GRANTS [FOR user]

Questa dichiarazione elenca la dichiarazione GRANT o le dichiarazioni che devono essere emesse per duplicare i privilegi concessi a un account utente MySQL. L'account viene nominato utilizzando lo stesso formato dell'istruzione GRANT; ad esempio "jeffrey" @ "localhost". Se si specifica solo la parte del nome utente del nome dell'account, viene utilizzata una parte del nome host di '%'. Per ulteriori informazioni sulla specifica dei nomi degli account, consultare la Sezione 12.5.1.3, "Sintassi GRANT".

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

Per elencare i privilegi concessi all'account che si sta utilizzando per connettersi al server, è possibile utilizzare una delle seguenti dichiarazioni:

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

A partire da MySQL 5.0.24, se SHOW GRANTS FOR CURRENT_USER (o una qualsiasi delle sintassi equivalenti) viene utilizzato nel contesto DEFINER, come all'interno di una procedura memorizzata definita con SQL SECURITY DEFINER), le concessioni visualizzate sono quelle del definitore e non l'invocatore.

SHOW GRANTS visualizza solo i privilegi concessi esplicitamente all'account indicato. Altri privilegi potrebbero essere disponibili per l'account, ma non vengono visualizzati. Ad esempio, se esiste un account anonimo, l'account indicato potrebbe essere in grado di utilizzare i suoi privilegi, ma SHOW GRANTS non li visualizzerà.

SHOW GRANTS richiede il privilegio SELECT per il database mysql.


SHOW GRANTS requires the SELECT privilege for the mysql system database, except to display privileges and roles for the current user.
Sandip Bhattacharya,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.