Video: la sicurezza dei database in internet 2024
Quando MySQL è installato, crea automaticamente un database chiamato mysql . Tutte le informazioni utilizzate per proteggere i dati vengono archiviate in questo database, inclusi nomi account, nomi host, password e privilegi.
I privilegi sono memorizzati in colonne. Il formato di ciascun nome di colonna è privilege _priv, in cui privilegio è un privilegio account specifico. Ad esempio, la colonna contenente i privilegi ALTER è denominata alter_priv. Il valore in ogni colonna di privilegi è Y o N, che significa sì o no.
Quindi, ad esempio, nella tabella utente, ci sarebbe una riga per un account e una colonna per alter_priv. Se il campo account per alter_priv contiene Y, l'account può essere utilizzato per eseguire un'istruzione ALTER. Se alter_priv contiene N, l'account non ha il privilegio di eseguire un'istruzione ALTER.
Il database mysql contiene le seguenti tabelle che memorizzano i privilegi:
-
utente tabella: Questa tabella memorizza i privilegi che si applicano a tutti i database e le tabelle. Contiene una riga per ogni account valido che include le colonne nome utente, nome host e password. Il server MySQL rifiuta una connessione per un account che non esiste in questa tabella.
-
db tabella: Questa tabella memorizza i privilegi che si applicano a un determinato database. Contiene una riga per il database, che fornisce i privilegi a un nome account e a un nome host. L'account deve esistere nella tabella utente per i privilegi da concedere. I privilegi forniti nella tabella utente annullano i privilegi in questa tabella.
Ad esempio, se la tabella utente ha una riga per la finestra di progettazione degli account che fornisce i privilegi INSERT, la finestra di progettazione può essere inserita in tutti i database. Se una riga nella tabella db mostra N per INSERT per l'account designer nel database PetCatalog, la tabella utente la sovrascrive e la finestra di progettazione può essere inserita nel database PetCatalog.
-
host tabella: Questa tabella controlla l'accesso a un database, a seconda dell'host. La tabella host funziona con la tabella db. Se una riga nella tabella db ha un campo vuoto per l'host, MySQL controlla la tabella host per vedere se il db ha una riga lì. In questo modo, puoi consentire l'accesso a un db da alcuni host ma non da altri.
Ad esempio, supponiamo di avere due database: db1 e db2. Il database db1 ha informazioni sensibili, quindi vuoi che solo alcune persone lo vedano. Il database db2 contiene informazioni che vuoi vedere a tutti. Se hai una riga nella tabella db per db1 con un campo host vuoto, puoi avere due righe per db1 nella tabella host.
Una riga può fornire tutti i privilegi agli utenti che si connettono da un host specifico, mentre un'altra riga può negare i privilegi agli utenti che si connettono da qualsiasi altro host.
-
tables_priv tabella: Questa tabella memorizza i privilegi che si applicano a tabelle specifiche.
-
columns_priv tabella: Questa tabella memorizza i privilegi che si applicano a colonne specifiche.
Puoi vedere e modificare le tabelle in mysql direttamente se stai usando un account che ha i privilegi necessari. È possibile utilizzare query SQL come SELECT, INSERT e UPDATE. Se accedi a MySQL tramite il tuo datore di lavoro, un cliente o una società di hosting web, probabilmente non hai un account con i privilegi necessari.