Quali utenti MySQL hanno accesso a un database?


13

Come posso sapere quali utenti MySQL hanno accesso a un database e quali privilegi hanno?

Mi sembra di essere in grado di ottenere queste informazioni da phpMyAdmin quando faccio clic su "Privilegi". . .

                 Users having access to "mydatabase"
User     Host       Type               Privileges              Grant
myuser1  %          database-specific  ALL PRIVILEGES          Yes
root     localhost  global             ALL PRIVILEGES          Yes
myuser2  %          database-specific  SELECT, INSERT, UPDATE  No

. . . ma vorrei sapere come eseguire questa query dalla riga di comando.

(phpMyAdmin spesso mi mostra la sintassi SQL del comando che sta eseguendo, ma in questo caso non la vedo.)

Nota che non sto chiedendo quali concessioni ha un determinato utente (ad esempio "MOSTRA SOVVENZIONI per myuser1") ma piuttosto, dato il nome di un database, come posso determinare quali utenti MySQL hanno accesso a quel database e quali privilegi hanno ? Fondamentalmente, come posso ottenere il grafico sopra dalla riga di comando?

Risposte:


16

È possibile aggiungere \ G al comando per ottenere i risultati visualizzati in 'griglia' veiw

SELECT * FROM mysql.db WHERE Db = '<database name in LC>'\G;

4
+1 per \ G non visto prima
jx12345

8
SELECT * FROM mysql.db WHERE Db = '<database name in LC>';

Grazie. Questa risposta sembra produrre gli stessi dati grezzi del grafico nella domanda. . . ma in un formato meno leggibile. Immagino che presentare i dati nello stesso formato sia un esercizio per il lettore. . . ;)
Philip Durbin,

2

Puoi provare questo, dovrebbe fornire la migliore leggibilità:

select db 'DATABASE', host HOST, user USER from mysql.db where db = '<databasename>';

Qualcosa di più memorabile per il cli:

select db,host,user from mysql.db;
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.