MySQL è 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:
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.
-> 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ì.
-> 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".
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.
Se volessimo cancellare l’utente, basterà revocare ogni privilegio.
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 😉
Salve io lavoro in windows, ho istallato mysql e funziona perfettamente, ora vorrei sapere quale programma mi consiglia dove poter inserire le shell.
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.
per windows usa putty, perchè i comandi dos sono altra cosa da quelli ssh
Utilissimo, grazie!
come si entra nella schell di mysql (5.1) su Windows è sufficiente:
c:programmimysqlmysql server 5.1binmysql -u root -p
e dopo aver inserito la password posso lanciare mysqldump facendo un restore?
grazie
mysqldump lo lanci fuori dalla shell mysql
quindi da mysql command line client ma andando prima sul db (use db) o ??????
Il comando esatto è questo: