Istruzioni GRANT e REVOKE , Inserimento e cancellazione Utenti mysql

Allora come si procede all'inserimento nei diritti delle tabelle???

Ci sono 2 modi uno è il buon vecchio SQL

1) INSERIMENTO ATTRAVERSO QUERY

INSERIMENTO DI UN UTENTE
es: INSERT INTO user (Host,User,Password) VALUES ('localhost','pippo',password('figo'))
password serve per fare un ascing della password su Db ma se lo facciamo in MD5 è piu' sicuro (:

codice:
+-----------+-------+------------------+
| host      | user  | password         |
+-----------+-------+------------------+
| localhost | root  |                  |
| marantega | root  |                  |
| localhost |       |                  |
| marantega |       |                  |
| %         | pippo | 09e7d92b43759e6c |
| localhost | tocio | paperoga         |
+-----------+-------+------------------+
ATTENZIONE!!!! se si modificano le tabelle di grant, come la tabella user,
direttamente con i comandi di manipolazione delle tabelle, il server MySQL non si accorge
automaticamente del cambiamento e continua ad autenticare gli utenti con le vecchie informazioni.
Per forzare il server a leggere i nuovi diritti, occorre dare il comando
FLUSH PRIVILEGES

che richiede il privilegio RELOAD che abbiamo visto in precedenza per essere eseguita.

AUTENTICAZIONE A CARATTERI JOLLY
Se non ci fosse la possibilità di inserire caratteri jolly e utenti anonimi,
la decisione se un utente può accedere o no al database sarebbe semplice.
Con i caratteri jolly la cosa si complica.
Ad esempio, se io sono l'utente pippo che si collega da localhost devo inserire
la password oppure no? Infatti in teoria l'utente pippo@localhost
potrebbe connettersi al database sia grazie alla riga:

codice:
+-----------+-------+------------------+
| host      | user  | password         |
+-----------+-------+------------------+
| localhost |       |                  |
+-----------+-------+------------------+
localhost (cioè un utente anonimo da localhost)
o tramite la riga

codice:
+-----------+-------+------------------+
| host      | user  | password         |
+-----------+-------+------------------+
| %         | pippo | 09e7d92b43759e6c |
+-----------+-------+------------------+
(l'utente pippo da un macchina qualunque).

MySQL da più importanza al nome dell'host che al nome dell'utente.
Quando il client tenta di connettersi,
MySQL ordina la tabella utenti dagli host più specifici a quelli più generici.

Ad esempio, abbiamo, dal più specifico al più generico:

localhost (che identifica una macchina qualunque)
'%.html.it' (che specifica una qualunque macchina da html.it)
'%' (che identifica una macchina qualunque).

Una volta ordinato in questo modo, esamina una riga alla volta fino a trovare la prima
che corrisponde all'utente che vuole collegarsi, e usa l'informazione ricavata da essa.
Per far ciò considera, a parità di host, prima i nomi utenti non vuoti e poi i nomi utenti
(che corrispondono ad un utente generico).
Ad esempio, nel nostro caso, pippo@localhost non ha bisogno di password, in quanto viene utilizzata per
l'autenticazione la riga

codice:
+-----------+-------+------------------+
| host      | user  | password         |
+-----------+-------+------------------+
| localhost |       |                  |
+-----------+-------+------------------+
che ha l'host più spcecifico e non la riga

codice:
+-----------+-------+------------------+
| host      | user  | password         |
+-----------+-------+------------------+
| %         | pippo | 09e7d92b43759e6c |
+-----------+-------+------------------+
CANCELLAZIONE DI UN UTENTE DAL DB
Per eliminare o modificare i diritti ad un utente useremo il comando DELETE per la cancellazione e UPDATE per la modifica
ed eseguire successivamente FLUSH privileges

ATTENZIONE!! Dovete accedere a MySQL con un' utenza che permetta la modifica del database mysql.


2) ISTRUZIONI GRANT , REVOKE e FLUSH

  • GRANT
    Per evitare l'inserimento manuale e inserire tutti i campi delle tabella esiste la funzione GRANT

    codice:
    mysql> grant all on poenta.* to tocio@localhost
    identified by "papeperoga";
    Questo comando farà in automatico tutti i cambiamenti alle tabelle necessarie al posto vostro.
    la prima parte dell' istruzione grant può usare la parola all, oppure una qualsiasi delle opzioni elencate nella tabella User
    per lo piu' le istruzioni SQL (select,create,drop,index,etc..).

    La seconda parte (on poenta.*) dell'istruzione grant identifica dove i privilegi verranno applicati
    i livelli di permessi sono i seguenti
  • grant all on *.* = Diritti universali i privilegi sono inseriti nella tabella User
  • grant all on database.* = Si applica su tutte le tabelle di un solo database
  • grant all on database.table_name = Si applica su una singola tabella
  • grant all(col1, col2) on database.table_name = Si applica a determinate colonne di una tabella di un database

    La terza parte (to tocio@localhost) indica indica l'utente al quale consentire l'accesso.
    Come abbiamo visto in precedenza il MySQL richiedesia un nome sia un host
    Nell'istruzione grant i due sono separati dal simbolo @

    la quarta parte (identified by "papeperoga")attribuisce una password all'utente.


    Per esaminare i diritti di un utente possiamo digitare

    codice:
    mysql> show grants for tocio@localhost;
    +---------------------------------------------------------------------+
    | Grants for tocio@localhost                                          |
    +---------------------------------------------------------------------+
    | GRANT ALL PRIVILEGES ON *.* TO 'tocio'@'localhost' WITH GRANT OPTION|
    +---------------------------------------------------------------------+
    Tutto quello che dovete conoscere è lo username e la password.

  • REVOKE
    Se volete togliere alcuni privilegi a un utente, potete usare un REVOKE

    es: revoke shutdown on *.* from tocio@localhost

    è come il GRANT fa il contrario l'unica differenza nella sintassi è il from anzichè to

    per rimuovere del tutto l'utente dovete fare tenendo condo che l'utente è identificato da un nome e un host

    delete from user where user='user' and host='host'
  • FLUSH
    Questa funzione vi permette di ricaricare i diritti appena concessi senza utilizzare GRANT
    per ricaricarli useremo

    codice:
    mysql> flush privileges


Grazie per questa pillola a GM e Bubu e i ragazzi dell'OT.
Questa pillola è il mio 3000 post..
Adesso lascio a voi la parola per consigli, critiche è modifiche..