Scritto da davidonzo il 27/04/2007, in OpenSource
ATTENZIONE!
L'articolo che stai leggendo è stato scritto 1228 giorni orsono.
Le informazioni presenti potrebbero non essere aggiornate!
MySQLMySQL è sicuramente la migliore scelta open source in materia di database relazionali. Oramai la fa da padrone in una miriade di applicazioni web.

L'era dei CMS ha visto un'esplosione dell'uso di MySQL. Di seguito voglio appuntarmi un riassunto di tutti i principali comandi.

Parto dal presupposto che abbiate già installato il server dei database MySQL. Se non lo avete ancora fatto, potete leggere questo articolo per installare il tutto su Windows e quest'altro per installare i componenti necessari su una distro Linux debian based (ovvero usando apt).

Entriamo nel sistema!
Da shell dei comandi, basterà digitare:

mysql -u [utente] -p
password:
mysql>

Gestione degli utenti.
In fase di installazione abbiamo scelto il nome utente e la password per accedere come root al server dei database mysql.
Possiamo comunque creare tutti gli utenti che vogliamo e delimitare i poteri di ognuno!

Quando può essere utile la cosa? Sicuramente in locale, durante i vostri esperimenti, non ve ne fregherà niente di gestire diversi utenti con diversi permessi. Ma immaginare di gestire un server remoto. Se vendiamo X spazio del server e diamo la disponibilità di un server MySQL, sicuramente non vorremmo che il ciente acceda con le chiavi di root.

Bene, in questo caso creiamo un nuovo utente, fornendo a questo tutti i privilegi di uno specifico database.

mysql> GRANT ALL PRIVILEGES ON nomedatabase.* TO nomeutente@localhost
-> IDENTIFIED BY 'passwordutente';

In questo caso abbiamo dato tutti i poteri sul database considerato a questo nuovo utente. Si può provare immediatamente la cosa, identificandosi con le direttive date al nuovo utente, via phpmyadmin.

Se vogliamo dare poteri meno estesi, basterà specificare quali privilegi accordiamo all'utente. Se vogliamo che l'utente sia abilitato a fare solo query di selezione e update dei dati esistenti, scriveremo così.

mysql> GRANT SELECT, UPDATE ON nomedatabase.* TO nomeutente@localhost
-> IDENTIFIED BY 'passwordutente';

Si faccia attenzione a come abbiamo scritto il nome utente. Usando il suffisso @localhost abilitiamo l'utente a potersi connettere al database solo dalla macchina in cui gira il server MySQL.
Se avessimo voluto abilitare connessioni da remoto, avremmo scritto 'nomeutente@*' (impostazoine più che sconsigliata!), abilitando una connessione da qualsiasi altro host, oppure 'nomeutente@A.B.C.D' (sostituendo un IP valido a A.B.C.D.) per specificare un determinato host.

Può capitare che un utente distratto abbia perso la sua password, o peggio che l'abbia messa in firma nelle mail, accando al suo nome utente skype (succede...).
Quando il genio del male si accorgerà della mondialata, sicuramente vi telefonerà preoccupatissimo per il suo prezioso database.
Non vi resta che modificare la password di colui che avrete appena ribattezzato "MegaLOLman".

mysql> SET PASSWORD nomeutente@localhost=PASSWORD('nuovapassword');

Inutile dire che le password sono criptate, usando proprio la funzione PASSWORD() di MySQL.

Così come diamo privilegi ad un utente, possiamo anche toglierli. Ipotizziamo di voler revocare al nostro utente la possibilità di cancellare dati dal database. Useremo un comando del tutto speculare a GRANT: REVOKE.

mysql> REVOKE DELETE ON nomedatabase.* FROM nomeutente@localhost;

Se volessimo cancellare l'utente, basterà revocare ogni privilegio.

mysql> REVOKE ALL PRIVILEGES ON nomedatabase.* FROM nomeutente@localhost;
mysql> USE mysql;
mysql> DELETE FROM user WHERE user = 'nomeutente';

Praticamente abbiamo prima tolto ogni privilegio all'utente, dopo, accedendo al database 'mysql' (che gestisce tutte le informazioni vitali per il corretto funzionamento del server), cancelliamo nella taballa user la riga relativa all'utente considerato.

Di seguito un overiview dei privilegi gestibili:
  • ALL PRIVILEGES: concede tutti i privilegi.
  • ALTER: consente di modificare delle relazioni (modificare la struttura di una tabella).
  • CREATE: consente di creare delle relazioni (creare una nuova tabella).
  • DROP: consente di eliminare delle relazioni (cancellare una tabella).
  • DELETE: consente di cancellare i dati di una tabella.
  • INSERT: consente di inserire dati in una tabella.
  • SELECT: consente di selezionare dati da una o più tabelle.
  • UPDATE: consente di modificare i record.
  • INDEX: consente di gestire gli indici.
E per ora può bastare :) . Mi piacerebbe postare presto le prossime puntate, ma non garantisco niente ;)
Hai trovato l'articolo interessante?
Sottoscrivi il Feed RSS per essere informato automaticamente degli ultimi aggiornamenti!
 
.Commenti rss
# 1
Salve io lavoro in windows, ho istallato mysql e funziona perfettamente, ora vorrei sapere quale programma mi consiglia dove poter inserire le shell.
Di catellostefano  (Inviato il 05/02/2009 @ 16:43:29)
# 2
Per windows va abbastanza bene la normalissima finestra ms-dos, se si vuole qualcosa di più avanzato basta controllare qui: http://dev.mysql.com/downloads/gui-tools/5.0.html

Ma personalmente non ho mai usato quei programmi. Quindi non ho una grande idea della cosa.
Di davidonzo  (Inviato il 06/02/2009 @ 21:44:53)
# 3
per windows usa putty, perchè i comandi dos sono altra cosa da quelli ssh

Di Gb  (Inviato il 24/08/2009 @ 17:10:08)
# 4
Utilissimo, grazie!
Di Denis  (Inviato il 04/02/2010 @ 15:09:20)
# 5
come si entra nella schell di mysql (5.1) su Windows è sufficiente:
c:\programmi\mysql\mysql server 5.1\bin\mysql -u root -p

e dopo aver inserito la password posso lanciare mysqldump facendo un restore?
grazie
Di tb  (Inviato il 01/04/2010 @ 10:50:45)
# 6
mysqldump lo lanci fuori dalla shell mysql
Di davidonzo  (Inviato il 01/04/2010 @ 11:29:47)
# 7
quindi da mysql command line client ma andando prima sul db (use db) o ??????
Di tb  (Inviato il 01/04/2010 @ 12:17:53)
# 8
Il comando esatto è questo:

mysqldump -u [username] -p [password] [databasename] > [backupfile.sql]
Di davidonzo  (Inviato il 01/04/2010 @ 12:24:55)


I commenti possono essere moderati.
Se non lo vedi comparire subito non reinserirlo più volte.
Grazie per la gentile collaborazione.