Tabella USER

codice:
> show columns from user;
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field                 | Type                              | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host                  | varchar(60) binary                |      | PRI | 	   |       |
| User                  | varchar(16) binary                |      | PRI |         |       |
| password              | varchar(16)                       |      |     |         |       |
| Select_priv           | enum('N','Y')                     |      |     | N       |       |
| Insert_priv           | enum('N','Y')                     |      |     | N       |       |
| Update_priv           | enum('N','Y')                     |      |     | N       |       |
| Delete_priv           | enum('N','Y')                     |      |     | N	   |       |
| Create_priv           | enum('N','Y')                     |      |     | N       |       |
| Drop_priv             | enum('N','Y')                     |      |     | N       |       |
| Reload_priv           | enum('N','Y')                     |      |     | N       |       |
| Shutdown_priv         | enum('N','Y')                     |      |     | N       |       |
| Process_priv          | enum('N','Y')                     |      |     | N       |       |
| File_priv             | enum('N','Y')                     |      |     | N       |       |
| Grant_priv            | enum('N','Y')                     |      |     | N       |       |
| References_priv       | enum('N','Y')                     |      |     | N       |       |
| Index_priv            | enum('N','Y')                     |      |     | N       |       |
| Alter_priv            | enum('N','Y')                     |      |     | N       |       |
| Show_db_priv          | enum('N','Y')                     |      |     | N       |       |
| Super_priv            | enum('N','Y')                     |      |     | N       |       |
| Create_tmp_table_priv | enum('N','Y')                     |      |     | N       |       |
| Lock_tables_priv      | enum('N','Y')                     |      |     | N       |       |
| Execute_priv          | enum('N','Y')                     |      |     | N       |       |
| Repl_slave_priv       | enum('N','Y')                     |      |     | N       |       |
| Repl_client_priv      | enum('N','Y')                     |      |     | N       |       |
| ssl_type              | enum('','ANY','X509','SPECIFIED') |      |     |         |       |
| ssl_cipher            | blob                              |      |     |         |       |
| x509_issuer           | blob                              |      |     |         |       |
| x509_subject          | blob                              |      |     |         |       |
| max_questions         | int(11)                           |      |     | 0       |       |
| max_updates           | int(11) unsigned                  |      |     | 0       |       |
| max_connections       | int(11) unsigned                  |      |     | 0       |       |
+-----------------------+-----------------------------------+------+-----+---------+-------+
Ogni utente che vuole accedere al server di mysql deve essere inserito qui dentro..
le colonne piu' importanti di questa tabelle sono Host,User,password che guarda caso sono quelle che usiamo su mysql_connect()

Se accedete attraverso PHP sulla vostra stessa macchina il valore di host sarà uguale a localhost e modificando i valori di host potete assegnare diritti diversi
a host diversi.

ATTENZIONE!! I diritti attivati in questa tabella sono attivi per qualsiasi
db del server Mysql.


La tabella User contiene una serie di colonne che assicurano diritti amministrativi.
Queste colonne sono:

  • File_priv:
    Se concesso Permette al server di database di leggere e scrivere file appartenenti al File System.
    Servirà principalmente per caricare un file in una tabella di database
  • Grant_priv:
    Un utente dotato di questo privilegio sarà in grado di assegnare i suoi privilegi ad altri utenti
  • Proccess_priv:
    Questo permette all'utente di vedere e terminare tutti i processi e i thread
  • Reload_priv:
    Viene usata per lo piu' nell'utility mysqladmin per eseguire comandi di scrittura forzata(flush)
    attraverso root@ramengo:~# mysqladmin reload
  • Shutdown_priv:
    Permette all' utente di disattivare il demone il demone di mysql utilizzando mysqladmin shutdown


Dalla versioni > 3.23 si sono aggiunti vado a intuito a spiegarli
anche perchè sinceramente non li ho mai usati
  • Create_tmp_table_priv:
    Permette la creazione di tabelle temporanee
  • Execute_priv:
    Permette all'utente di lanciare store procedure (MYSQL 5.0)
  • Lock_tables_priv:
    Permette di bloccare le tabelle di un db sulle tabelle che hanno privilegi SELECT attivi
  • Process_priv:
    Penso serva per visualizzare i processi in esecuzione di mysql
  • Repl_client_priv:
    Replication Client permette di conoscere chi è master o chi è slave
  • Repl_slave_priv:
    Necessita di privilegi slave per visualizzare i binlogs come master
  • Show_db_priv: Permette la visione di tutti i database
  • Super_priv:
    permette unna connessione (unica) se si è raggiunto il limite del max_connections
    e permette di eseguire i comandi CHANGE MASTER, KILL thread, mysqladmin debug, PURGE MASTER LOGS and SET GLOBAL


la documentazione si trova qui

Dalla versione 4.0.0 si ha il supporto per le connessioni SSL criptografate.
Per capire come usare SLL sono necessari alcuni concetti relativi a SSl e X509.
SSL è un protocollo che usa differenti algoritmi di compressione per scambiare i dati in tutta sicurezza.
Utilizza una chiave criptata in X509 che permette di ottenere un tipo di
dato illeggibile se non si conosce la chiave di lettura.
X509 è uno standard di cifratura che permette l'identificazione di qualcuno attraverso internet,
è generalmente usata nelle applicazioni di E-commerce. le chiavi di cifratura X509,
sono assegnate da un ente chiamato 'Certificate Authority'
per evitare che qualcuno possa intercettare e leggere il flusso di dati che sono spediti e ricevuti dal Server

Mysql usa di default connessioni non criptate tra il Client e il Server
perchè significa rendere le connessioni tra i protocolli client/server molto piu' lente
e ritardare i task di mysql per via dell'uso intensivo della CPU
Di default MySql è ottimizzato per la velocità di esecuzione

ssl_type ssl_cipher x509_issuer x509_subject

le altre colonne contengono per la maggior parte privilegi relativi a istruzioni SQL per la gestione del database :
questi parametri permettono di attivare/disabilitare i diritti di Select/Update/Drop etc

Una piccola nota la spendo su questi 3 campi che possono assegnare limitazioni particolari
per ogni utente che ha l'accesso il server MySQL per ogni ora
  • max_questions:
    se si vogliono limitare il numero di query dell'utente
  • max_updates:
    se si vogliono limitare il numero di update dell'utente
  • max_connections:
    se si vogliono limitare il numero di connessioni dell'utente