Documentazione Contatti      
Documentazione > Tutorial > MYSQL - Controllo degli accessi
Hide
Best Practices
EJB
Frameworks
Howto
J2EE
J2ME and Wireless
J2SE
JSP e Servlet
Java Application Server
Java IDE/Tools
Java Media
Java Security
Java Sys Admin
Java e XML
Java e SQL
OpenSource Java
Patterns
Repository
Tesi
UML
Web Services
Slide
White Paper di jws.it
project management
Eventi
Groovy



Sun-Ibm, matrimonio annullato


Henry Ford
Vero progresso quando i vantaggi di una nuova tecnologia diventano per tutti


XML: Sicurezza



  Visualizza Commenti (0) Aggiungi Commento    
 
MYSQL - Controllo degli accessi
By Carlo di Gianvito
17 aprile 2005

  MYSQL - Controllo degli accessi

Il controllo degli accessi

Il db mysql ha una struttura come quella mostrata in figura, contenente le sueguenti tabelle: columns_priv, db,func,host,tables_priv e user.

Fig. 1 Il controllo degli accessi 

Quando ci connettiamo al server MySQL, ad esempio tramite una classe java, viene controllato se nella tabella user esiste un record contenente tre cose:

  • l'host da cui parte la connessione
  • il nome dell'utente (user)
  • se l'utente utilizza una password di protezione

in mancanza di questi requisiti MySQL si rifiuta di aprire la connessione:

Error No. 1045
Access denied for user: 'root@127.0.0.1'(Using password:YES)
 
se invece trova i requisiti:
  • controlla se nel record è presente un flag di autorizzazione
  • se non c'è, MySQL passa alla tabella db e controlla se c'è un record contenente user, host e database
  • se c'è controlla se nella tabella host è presente un record contenente host e database

in definitiva si può dire che le autorizzazioni più importanti sono nelle tabelle user e db ma è possibile limitare l'accesso anche in base all' host e tramite le tabelle columns_priv e tables_priv anche a livello di tabella e colonna.

E' importante notare che i privilegi concessi nella tabella user sono privilegi da amministratore (root) e valgono per tutti i database

le autorizzazioni sono impostate nella tabella user in base ai valori dei campi, select_priv, Insert_priv, Update_priv e così via, che a volte avranno valore Y a volte N. Il campo Host potrà essere impostato con il carattere % (carattere Jolly) ad indicare qualsiasi Host. Vediamo alcuni esempi di aggiunta e modifica di autorizzazioni su un database chiamato test

Creazione del database
create database test;

Inserire un nuovo utente
INSERT INTO user(host,user,password)
VALUES(127.0.0.1,'eleanor_rigby',password('pennylane'));

n cui 127.0.0.1 è l'IP predefinito per il localhost, seguito da user e psw.

Inserimento di un record nella tabella db
INSERT INTO db (host,db,;user,Select_priv,insert_priv,update_priv,delete_ priv,create_priv,drop_priv)
-> VALUES ('127.0.0.1','test','eleanor_rigby','Y','Y','Y','Y','Y','Y');

per fare in modo che i nuovi privilegi diventino operativi è necessario il comando:

FLUSH PRIVILEGES

Mofidifica dell'utente
UPDATE db SET user='get_back'
WHERE user='eleanor_rigby';

Eliminazione dell'utente
DELETE FROM user WHERE user='get_back';
DELETE FROM db WHERE user='get_back';

Autorizzazioni GRANT
GRANT SELECT INSERT UPDATE DELETE ON test.* TO eleanor_rigby;
autorizza l'utente eleanor-rigby alla selezione, all'inserimento, all'aggiornamento e alla cancellazione, su tutte le tabelle del db test

GRANT SELECT INSERT UPDATE DELETE ON test.* TO eleanor_rigby@localhost;
idem come sopra ma si specifica la macchina dalla quale ci si può connettere, in caso contrario se non si specifica l'host si autorizza l'utente a connettersi da qualsiasi macchina

GRANT SELECT INSERT UPDATE DELETE ON test.* TO eleanor_rigby@localhost
IDENTIFIED BY pennylane;
autorizzazione con password

Revoca di autoririzzazioni con REVOKE
REVOKE SELECT INSERT UPDATE DELETE ON test.* FROM eleanor_rigby@localhost;




JavaPortal è ideato da:    
K-Tech Logo










LICENZA



Eccetto dove diversamente specificato, i contenuti di questo sito sono rilasciati sotto licenza Creative Commons

Sitemap  © 2002-2004 Copyright Information. Privacy . Today is sabato 19 giugno 2010