🧚 Ascolta! Beekeeper Studio è una GUI per MySQL veloce, moderna e open source Scarica
8 settembre 2024 Di Matthew Rathbone

I privilegi di MySQL determinano quali azioni un utente può eseguire all'interno di un database. SHOW GRANTS ti permette di controllare questi privilegi per assicurarti che gli utenti abbiano l'accesso corretto. Puoi:

  • Visualizzare tutti i privilegi di un utente specifico.
  • Verificare gli utenti per motivi di sicurezza.
  • Modificare i privilegi in base ai grant attuali.

Prima di continuare a leggere, volevo parlarti del nostro gestore di database MySQL moderno e veloce, Beekeeper Studio. Il suo editor SQL ha l'autocompletamento mentre scrivi e tiene la cronologia di ogni query che hai eseguito, comodissimo quando verifichi i permessi. Ed è gratuito per MySQL: scaricalo qui.

Sintassi di base di SHOW GRANTS

SHOW GRANTS FOR 'username'@'host';
  • ‘username’ indica l'utente MySQL.
  • ‘host’ indica l'hostname o l'indirizzo IP da cui l'utente si connette.

Visualizzare i grant di un utente specifico

Supponiamo di avere un utente, ‘john’, che si connette da localhost. Per vedere i suoi permessi, usa la seguente query:

SHOW GRANTS FOR 'john'@'localhost';

Output previsto:

+---------------------------------------------------------+
| Grants for john@localhost                               |
+---------------------------------------------------------+
| GRANT USAGE ON *.* TO `john`@`localhost`                |
| GRANT SELECT, INSERT ON `mydb`.* TO `john`@`localhost`  |
+---------------------------------------------------------+

In questo output:

  • GRANT USAGE indica che l'utente non ha privilegi globali.
  • GRANT SELECT, INSERT ON mydb.* mostra che john ha i permessi SELECT e INSERT su tutte le tabelle del database ‘mydb’.

Mostrare i grant di tutti gli utenti (MySQL 5.7 e successivi)

In MySQL non esiste un unico comando per mostrare direttamente i grant di tutti gli utenti. Puoi però generare la query necessaria dalla tabella mysql.user e poi usare SHOW GRANTS per ciascun utente:

SELECT CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host, '\';') 
FROM mysql.user;

Questa query genera un elenco di istruzioni SHOW GRANTS per ogni utente del sistema. Ecco un esempio di output:

+--------------------------------------------------+
| CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host |
+--------------------------------------------------+
| SHOW GRANTS FOR 'root'@'localhost';              |
| SHOW GRANTS FOR 'john'@'localhost';              |
| SHOW GRANTS FOR 'admin'@'192.168.1.10';          |
+--------------------------------------------------+

Poi puoi eseguire la query SHOW GRANTS per visualizzare i privilegi di un utente specifico.

Mostrare i grant dell'utente corrente

Per mostrare i grant dell'utente attualmente connesso al database, puoi usare la funzione CURRENT_USER():

SHOW GRANTS FOR CURRENT_USER();

Output previsto:

+---------------------------------------------------------+
| Grants for current user                                 |
+---------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost`       |
+---------------------------------------------------------+

Questo comando è particolarmente utile per gli utenti che non sono sicuri dei propri permessi.

Interpretare l'output

  • GRANT USAGE: indica che l'utente non ha privilegi globali, ma potrebbe avere privilegi specifici sui database.
  • ALL PRIVILEGES: concede tutti i privilegi su un database o a livello globale, tranne GRANT OPTION.
  • GRANT OPTION: permette a un utente di concedere privilegi ad altri.
    Grant specifici per database: permessi come SELECT, INSERT, UPDATE e DELETE possono essere concessi per un determinato database o tabella.

Capire i GRANTS di MySQL

MySQL fornisce l'istruzione GRANT, che permette agli amministratori di concedere privilegi agli utenti.

Esiste anche l'istruzione inversa REVOKE per revocare i privilegi.

Prima di modificare i permessi, però, dobbiamo sapere quali sono attualmente in vigore: ed è qui che entra in gioco il comando SHOW GRANTS.

Il comando SHOW GRANTS mostra l'istruzione GRANT da eseguire per duplicare i privilegi di un utente.

Questo comando è compatibile con i motori di database MySQL e MariaDB.

Conclusione

Riassumendo, il comando SHOW GRANTS in MySQL serve a mostrare i privilegi degli utenti. È uno strumento importante per gli amministratori di database per verificare e gestire i permessi degli utenti.

Altri articoli che potrebbero piacerti:

Beekeeper Studio è una GUI per MySQL gratuita e open source

Ultimamente uso Beekeeper Studio per il mio lavoro con MySQL e è diventato in fretta uno dei miei strumenti per database preferiti. L'interfaccia è pulita, moderna e senza distrazioni, così è facile concentrarsi sulle query senza il caos che trovi in altri strumenti. - Surendra Singh

Beekeeper Studio è un client MySQL veloce, intuitivo e facile da usare. Supporta anche tantissimi altri database e funziona alla grande su Windows, Mac e Linux.

La versione Linux di Beekeeper è completa al 100%, senza tagli e senza compromessi sulle funzionalità.

Cosa dicono gli utenti MySQL di Beekeeper Studio

Beekeeper Beekeeper Still a Newbie

Ho scelto questo programma dopo anni di phpMyAdmin: è come entrare in un mondo di qualità superiore; qui ho sentito davvero che l'utente è curato sul serio. L'idea, la realizzazione, l'esperienza pratica: sono sinceramente grato a Matthew per tutto questo.

Alex M

Strumento favoloso, l'IDE più pratico che abbia trovato finora per amministrare database Postgres e MySql: funziona e basta, senza complicazioni :-)

Pronto a migliorare il tuo workflow MySQL?

download Scarica gratis