MySQL è un robusto database relazionale multipiattaforma sviluppato secondo i
canoni del software OpenSource. La versione del software presa come riferimento
in questa guida è la 3.23.47 per piattaforme Win32.
Uno degli obiettivi principali di qualsiasi database administrator deve
essere quello di garantire la sicurezza e la riservatezza dei dati sia
impedendone l'accesso da parte di utenti non autorizzati sia evitandone
l'alterazione accidentale o dolosa da parte degli utenti autorizzati.
MySQL
adotta un modello di sicurezza articolato secondo due livelli: il primo livello
riguarda il server mentre il secondo è relativo al database.
Questa
diversificazione degli strati di sicurezza si traduce in un continuo processo di
controllo degli accessi che, di regola, viene esplicato in due fasi
distinte:
- Verifica da parte del processo server dei privilegi necessari all'utente per la connessione;
- Verifica, per ogni richiesta utente, del possesso dei privilegi necessari a soddisfarla;
Il controllo degli accessi viene eseguito tramite le informazioni memorizzate
all'interno di alcune tabelle di sistema dette anche grant tables:
Tabella
|
Informazioni
|
user |
Determina a quali utenti |
db |
Memorizza i database ai quali un |
host |
E' utilizzata per specificare a |
tables_priv |
Indica i privilegi di ogni utente a livello di tabella |
columns_priv |
Indica i privilegi di ogni utente a |
Le prime tre tabelle vengono sfruttate per tutti i controlli mentre le ultime
due sono impiegate soprattutto per i controlli riguardanti le normali operazioni
sul database.
Ciascuna delle tabelle indicate ha un gruppo di campi che ne
determinano il contesto di applicazione e un campo per ciascun privilegio; di
seguito sono riportati tutti i privilegi insieme con il relativo contesto di
applicazione:
Privilegio |
Colonna |
Contesto |
select |
Select_priv |
Tabella |
insert |
Insert_priv |
Tabella |
update |
Update_priv |
Tabella |
delete |
Delete_priv |
Tabella |
index |
Index_priv |
Tabella |
alter |
Alter_priv |
Tabella |
create |
Create_priv |
Database,Tabella,Indice |
drop |
Drop_priv |
Database,Tabella |
grant |
Grant_priv |
Database,Tabella |
references |
References_priv |
Database,Tabella |
reload |
Reload_priv |
Amministrazione del server |
shutdown |
Shutdown_priv |
Amministrazione del server |
process |
Process_priv |
Amministrazione del server |
file |
File_priv |
Accesso file del server host |
Nelle tabelle user, db ed host i campi dei
privilegi possono assumere i valori 'Y' e 'N' mentre per le tabelle
table_priv e column_priv questi campi possono assumere i valori
mostrati nella seguente tabella:
Tabella |
Colonna |
Valori |
tables_priv |
Table_priv |
'Select', 'Insert', 'Update', 'Delete', 'Create', |
tables_priv |
Column_priv |
'Select', 'Insert', 'Update', 'References' |
columns_priv |
Column_priv |
'Select', 'Insert', 'Update', 'References' |