Ho trovato la panoramica contenuta in questo articolo ancora più utile dell'effettiva documentazione MySQL per aver descritto il quadro generale di come vengono concessi o negati i privilegi MySQL.
Il succo dell'articolo di panoramica è che i privilegi sono controllati da una serie di tabelle di autorizzazioni sempre più dettagliate in mysql
database:mysql.user
, mysql.db
, mysql.host
, mysql.tables_priv
, mysql.columns_priv
, mysql.procs_priv
. La regola generale è che un valore "Y" per un privilegio in una tabella a grana più fine prevale su un valore "N" in una tabella a grana più grossa. Quindi la strategia consigliata è iniziare negando la maggior parte dei privilegi nell'user
tabella (che fornisce il controllo più grossolano), quindi esegui solo le sostituzioni specifiche che desideri nelle tabelle a grana più fine.
In particolare, esiste un privilegio chiamato SHOW_DATABASES
che è determinato da Show_db_priv
colonna nel mysql.user
tavolo; ti consigliamo di impostarlo su "N" per l'utente in questione (e come descritto sopra, potresti voler impostare anche la maggior parte delle altre autorizzazioni nella tabella utente su "N") e quindi concedere solo i privilegi che l'utente ha effettivamente bisogno nel mysql.db
o mysql.tables_priv
tabella o qualsiasi altra cosa sarebbe appropriata per il tuo caso particolare.