Resettare la password di root di MySQL
Può accadere che ci si dimentichi della password di root di un sistema db MySQL. Per resettare la password è necessario operare come segue:
fermare mysql - su sistemi *nix da root con :
/etc/init.d/mysql stop
su windows - con privilegi di amministrazione - con:
Menu Start --> Esegui --> cmd --> services.msc
localizzare il servizio MySQL quindi selezionarlo con il tasto destro e stopparlo.
Una volta fermato MySQL:
riavviarlo con (linux):
mysqld_safe --skip-grant-tables
su windows:
portarsi nella sottocartella bin della cartella in cui si trova il programma mysql, quindi:
mysqld --skip-grant-tables
aprire una nuova shell mysql (da windows o linux) e digitare solo:
mysql -h localhost
si è avuto accesso senza inserire la password. Per modificarla:
use mysql;
UPDATE user SET password=password("NUOVAPASSWORD") WHERE user="root";
Una volta completata l'operazione, fermare di nuovo il server MySQL e riavviarlo normalmente, cioè come demone o servizio.
Per aggiungere un campo a una tabella MySQL, una volta ottenuta la connessione al server MySQL, si utilizza una sintassi simile a quella dell'esempio seguente, in cui si aggiunge il campo terza_colonna (varchar da 20) alla tabella nazioni:
mysql>ALTER TABLE nazioni ADD COLUMN terza_colon ... continua ...
Per aggiungere più campi a una tabella MySQL, si utilizza l'istruzione ALTER TABLE, seguita dal nome della tabella da modificare, dalla frase ADD COLUMN, dal nome della colonna che si vuole aggiungere, quindi dal tipo di dato che questa dovrà contenere (char, varchar, binary, int ecc.. ... continua ...
Il formato standard delle date in MySQL è YYYY-MM-DD, cioè anno, mese e giorno. Per fare una qualsiasi richiesta al server MySQl concernente una data (sia che si tratti di inserimento di record che di una query di estrazione dati che di un update) è indispensabile che la dat ... continua ...
Per chi proviene da prodotti per la memorizzazione delle informazioni come Access o in parte Filemaker e non ha conoscenze su sistemi operativi del mondo unix like, come linux, il concetto di utente può risultare abbastanza ostico.In realtà non c'è nulla di complicato.In M ... continua ...
Se si tenta la connessione a un database cui non si hanno i corretti privilegi di accesso, si otterrà una risposta di questo tipo:mysql> use test;
ERROR 1044 (42000): Access denied for user 'UTENTE'@'localhost' to database 'test'Il server MySQL avvisa che l'utente UTENTE non ha il diri ... continua ...
Per revocare i privilegi di accesso a un database MySQL, o comunque per eliminare un utente, si utilizza il comando revoke in questo modo:
REVOKE ALL ON CONTATTI.* FROM UTENTE@localhost;
Con questa istruzione, all'utente UTENTE si sono eliminati tutti i privilegi che deteneva sul database ... continua ...
Si consideri la necessità di dover aggiungere alla data di oggi, 3 luglio 2006, 10 giorni. In MySQL, questo tipo di operazione può essere compiuta mediante la funzione ADDDATE(). La sintassi di ADDDATE() è semplice:
mysql> select ADDDATE('2006/07/03', INTERVAL 10 D ... continua ...
Per calcolare la lunghezza in bit di una stringa, MySQL prevede una funzione ad hoc, BIT_LENGTH(), la cui sintassi è molto semplice:
mysql> SELECT BIT_LENGTH('http://www.emcquadro.com');
+----------------------------------------+
| BIT_LENGTH('http://www.emcquadro.com') |
+----- ... continua ...
Ogni volta che un client si connette a un server MySQL, quest'ultimo rilascia un id di connessione, ossia un identificativo univoco) basato sull'uptime del server stesso, quindi se il server viene riavviato è probabile che si ottenga uno stesso ID di connessione, dal momento che il server ini ... continua ...
La chiave primaria in qualsiasi database, sia esso MySQL, SQL Server, Oracle ecc, è un valore che consente l'identificazione univoca di ciascuna riga di una tabella.In genere, proprio per mantenere questo tipo di univocità si sceglie una chiave con tipo di dato numerico sequenziale ... continua ...
Una chiave esterna stabilisce una relazione tra una colonna o le colonne di una tabella e una chiave primaria o univoca di un'altra tabella.
Quindi se si vuole creare un vincolo di relazione, cioè un legme, tra - per esempio - due record appartenenti a due tabelle diverse, si farà ... continua ...
Può accadere che ci si dimentichi della password di root di un sistema db MySQL. Per resettare la password è necessario operare come segue:
fermare mysql - su sistemi *nix da root con :
/etc/init.d/mysql stop
su windows - con privilegi di amministrazione - con:
Menu ... continua ...
Per importare in una database MySQL una tabella o comunque un file in formato SQL, aprire una shell, quindi digitare:
mysql -u root -p NOME_DB_IN_CUI_IMPORTARE< NOMEFILE.sql
Dopo aver inserito la password richiesta, i dati saranno importati o, nel caso si cambi il nome del database di destin ... continua ...
Per inserire l'id dell'ultimo record inserito, si utilizza la funzione last_insert_id(), la cui sintassi è molto semplice:
select last_insert_id();
Si consideri che, in caso di più connessione contemporanee e, quindi molto probabilmente più inserimenti contemporanei, las ... continua ...
Il file di configurazione di MySQL (sistemi GNU/Linux /etc/my.conf o /etc/mysql/my.conf, famiglia Windows \\windows\\my.ini o ..\\MySQL\\my.ini) contiene diverse righe, ciascuna delle quali si occupa di indirizzare il funzionamento del server MySQL in un determinato modo. Nella sezione [mysqld] c'& ... continua ...
Per estrarre dei record casuali da una tabella MySQL si utilizza una query di questo tipo:
SELECT * FROM rubrica ORDER BY RAND() LIMIT 0,5;
in cui rubrica è il nome della tabella da cui estrarre dei record e 'LIMIT 0,5' assegna alla query il compito di estrarre i primi 5 record in ordine ca ... continua ...
Una volta installato MySQL su piattaforma Linux deve essere configurato.
Gli aspetti legati alla configurazione base non sono molti ma senza porre in atto le opportune procedure non si riuscirà ad avviare il server.
Prima di tutto va specificato che il server MySQL è avviato dal demone mys ... continua ...
Supponiamo di voler creare una tabella chiamata articoli.
Per creare un tabella MySQL abbiamo più di una possibilità:
creazione da linea di comando MySQL;creazione tramite programma client come MySQL Control Center, Navicat, phpMyAdmin. In questo articolo, si esaminerà solo la cr ... continua ...
Per memorizzare delle immagini in un database - questo discorso ha una sua validità sia per MySQL che che per altre piattaforme, come Microsoft SQL Server o Postgresql ecc... - la cosa migliore, in fase di progettazione è memorizzare le stesse come link a file posti all'interno di una directory con ... continua ...
Può esser utile affiancare a ciascun record di una lista, proveniente da una query select, un numero progressivo (attenzione non si tratta di un campo della tabella autoincrementante ma di un elemento a sé).
Per rendere meglio l'idea, si supponga di avere una tabella come la seguente:
... continua ...
Il file listaip.zip (509K) contiene un elenco in cui sono specificati gli indirizzi di rete associati e il relativo paese di origine. Il file è in formato sql.
Per trasformare gli interi delle colonne nominate da e a, si ricorrerà alla funzione inet_ntoa ... continua ...
Questa funzione si utilizza per trasformare un indirizzo IP in intero. Può essere utile, ad esempio, per conoscere la nazione di provenienza di un visitatore del nostro sito utilizzandola in congiunzione con all'elenco degli indirizzi IP di tutto il mondo. ... continua ...
Per trasfmormare un intero in indirizzo IP si utilizza la funzione INET_NTOA().
Per provare le potenzialità di questa funzione si può utilizzare la tabella elenco degli indirizzi IP di tutto il mondo ed eseguire una query come questa:
select INET_NTOA ... continua ...
Il demone mysqld segue - nelle operazioni che lo coinvolgono - il comportamento degli altri daemon presenti sul sistema. Quindi, per l'avvio:
/etc/init.d/mysql/mysqld start
Analogamente, per l'arresto del demone si opererà così:
/etc/init.d/mysql/mysqld stop
Per il riavvio del se ... continua ...
Per negare l'accesso al server via rete, si può abilitare (commentando, ossia inserendo il carattere cancelletto - # - prima della direttiva) la direttiva:
#skip-networking
che si trova:
nei sistemi unix like come linux in /etc/mysql/ o /etc
in Windows in \windows o \winnt
In ... continua ...
Per verificare quali siano le tabelle supportate, in base all'installazione compiuta, dalla versione di MySQL in esecuzione, si può utilizzare il comando SHOW ENGINES, che produrrà una tabella suddivisa in tre colonne: la prima identifica il tipo di tabella, la seconda specifica se, in fase di insta ... continua ...
Quando si ha in esecuzione un server MySQL che serve solo alcuni utenti ben definiti all'interno di una rete LAN e non si ha la necessità che lo stesso sia raggiunto dall'esterno, può essere opportuno limitare l'accesso al server stesso mediante l'utilizzo di una sorta di ACL, cioè di alcune regole ... continua ...
Per modificare l'aspetto del prompt dei comandi del client MySQL, si usa, da shell, il comando PROMPT che in unione con alcune opzioni consente di modificarne l'aspetto.
In questo esempio il classico mysql> verrà sostituito dal nome del database in uso.
mysql>prompt \d>
Dopo ... continua ...
Per rendere permanenti le modifiche effettuate sul prompt dei comandi del programma client mysql, va inserita la voce prompt nel file my.conf (linux) o my.ini (windows). Qui sotto ne è riportato un esempio in cui dalla successiva connessione al server verranno riportati nome utente e nome database: ... continua ...
A seconda della versione di MySQL e dei criteri con cui si è proceduto all'installazione, MySQL fa in modo che, qualora non venga specificata in fase di creazione della tabella la sua tipologia (MyISAM, BDB, INNODb ecc...), quest'ultima sia creata in base al default specificato nel file di configura ... continua ...
La password di root di MySQL, su piattaforma Windows, si trova all'interno del file di configurazione my.ini situato di default nella cartella c:\windows (o c:\winnt, a seconda di dove si trovi la cartella contenente Windows).L'aspetto delle righe di my.ini in cui trovare la password - se è stat ... continua ...
Per commentare delle righe o delle query MySQL esistono tre modi differenti:
stile C (/* */) il commento sarà quello compreso tra le due coppie di simboli;
carattere # il commento sarà quello sulla riga in cui è presente #
due trattini e spazio (questo dalla 3.23.3 in poi) il commento ... continua ...
Ogni database di MySQL viene scritto su disco, precisamente in una directory variabile a seconda del tipo di installazione che si è scelto. Ogni database, poi, ha al suo interno delle tabelle che vengono registrate su disco, indipendentemente dal tipo delle stesso (MyISAM, HEAP, BDB, InnoDB, MERGE o ... continua ...
Per trovare dei duplicati in una tabella MySQL, si può eseguire una query in cui utilizzare congiuntamente a SELECT le funzioni COUNT, GROUP BY e HAVING. Quello che segue è un esempio per cercare dei nominativi duplicati all'interno di una tabella persone.
SELECT cognome, COUNT(cognome) a ... continua ...
Il passaggio da MySQL versione 4.x a 5.x può generare un errore "Client does not support authentication protocol" quando si cerchi di stabilire una connessione a un database creato con versioni precedenti la famiglia 5.0.
Per risolvere questo problema, è necessario, da shell mysql effettuare la ... continua ...
Per calcolare la differenza tra due date in MySQL, si utilizza la funzione DATEDIFF(), la cui sintassi è molto semplice, dal momento che la funzione richiede solo due argomenti. Nel primo argomento si mette la prima data, nel secondo, chiaramente, la seconda.Il risultato della query potrà esser ... continua ...
Quando si esegue una query che interessi anche un campo in cui sia contenuta una data, di default MySQL tratta quella data in base al formato americano, quindi anno, mese, giorno (per essere pignoli secolo, anno, mese e giorno). A conferma di questo, basta eseguire la seguente query, che estrarrà la ... continua ...
La funzione CONCAT_WS() consente di unire delle stringhe di testo e aggiungere tra i valori un carattere di separazione. Si consideri di voler estrarre da una tabella il valore di nome, cognome e indirizzo di una persona e desiderare che i singoli valori siano separati da un asterisco.
Ques ... continua ...
Per recuperare informazioni sulla versione di MySQL installata sulla propria postazione o su un server remoto, è sufficiente dal prompt mysql effettuare una select utilizzando la funzione version().Questa è la corretta sintassi.
SELECT VERSION();
che produrrà un output analogo a questo: ... continua ...
Per recuperare, tramite una query, la data corrente, nel formato AAAA-MM-GG, si utilizza la funzione CURRENT_DATE(), così come indicato nell'esempio qui di seguito:
mysql> SELECT CURRENT_DATE();
+----------------+
| CURRENT_DATE() |
+----------------+
| 2005-11-15 |
+------------ ... continua ...
Per verificare quali siano gli utenti che hanno una connessione aperta sul server MySQL, si può utilizzare la funzione USER(), in un modo analogo al seguente:
mysql> SELECT USER();
+----------------+
| USER() |
+----------------+
| root@localhost |
+----------------+
1 row i ... continua ...
Per sapere il numero dei record inseriti, modificati o cancellati subito dopo una query MySQL di tipo INSERT, UPDATE, DELETE si utilizza la funzione ROW_COUNT().
Eccone un esempio:
DELETE FROM PERSONE WHERE IdPersona < 3;
Uno dei possibili campi di applicazione di questa funzione è, ad ... continua ...
Per resettare la password di un utente per l'accesso a MySQL, si può utilizzare SET PASSWORD in un modo simile al seguente:
SET PASSWORD FOR 'internet'@'localhost' = PASSWORD('nuova');
FLUSH PRIVILEGES;
All'utente internet abilitato alla connessione da localhost viene assegna ... continua ...
Per aggiungere un utente alla lista di coloro che sono abilitati alla connessione al database server di MySQL, si può utilizzare, dalla linea di comando del client mysql - con connessione root - la seguente istruzione, supponendo di voler creare un account per l'utente Mario sul database NEGOZIO: ... continua ...
Per ottenere l'elenco dei campi che compongono una tabella MySQL, si usa un comando come questo:
show columns from persone;
+---------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------ ... continua ...
Per ottenere la data e l'ora correnti, si utilizza la funzione predefinita now(). Nell'esempio seguente, si ottengono data e ora correnti in una colonna di chiamata ora.
mysql> select now() as ora;
+---------------------+
| ora |
+---------------------+
| 2005-11-13 1 ... continua ...
Effettuare il backup di database dipende da almeno tre possibili motivazioni che lo rendono un momento indispensabile:una copia di sicurezza fa vivere più tranquillitrasferimento dati da un server a un altroun database contiene dei dati e anche se questi si usano per giocare è utile fare ... continua ...
Per ripristinare una copia di backup di un database mysql, occorre, come prima cosa, ricreare il database con lo stesso nome originario, quindi, ad esempio, CREATE DATABASE databaseprova.
una volta effettuata la creazione del database, si tornerà alla shell o prompt dei comandi e si darà il segu ... continua ...
Le viste (views) sono una delle maggiori novità della versione 5 di MySQL - disponibili dalla 5.0.1.
Una vista è, semplificando molto il concetto che ne è alla base, ma offrendo al tempo stesso una visione molto vicina alla realtà concreta, una query memorizzata la cui funzione si rivela molto u ... continua ...
Per creare un database, dal prompt del client mysql - una volta effettuata la connessione - digitare CREATE DATABASE NOME_DB;
Ecco un esempio per creare un database di nome DatabaseProva.
mysql> create data ... continua ...
Per utilizzare un database, si usa il comando 'use'.
Ecco come selezionare il database DatabaseProva:
mysql> use DatabaseProva;
Database changed
... continua ...
Se MySQL server opera all'interno di una rete protetta da firewall o router con NAT abilitato è necessario consentire l'instradamento dei pacchetti verso la porta TCP/IP 3306.
Per utenti Windows XP che abbiamo Windows Firewall abilitato:
Pannello di Controllo --> Windows Firewall --> Eccez ... continua ...
Per vedere quali tabelle siano contenute in un database, si usa il comando SHOW TABLES. La corretta sintassi è questa:
mysql> SHOW TABLES;
+-------------------------+
| Tables_in_databaseprova |
+-------------------------+
| persone |
+-------------------------+
1 r ... continua ...
Per creare una tabella, si deve utilizzare l'istruzione 'CREATE TABLE'. Si supponga di voler creare una tabella 'persone' che conterrà una serie di nomi e cognomi. Qui di seguito ne è riprodotto un esempio:
CREATE TABLE `persone` (
`id` int(10) unsigned NOT NULL auto_increment,
` ... continua ...
A volte può risultare utile concatenare delle stringhe all'interno di una query. Si faccia il caso di una tabella in cui sono contenuti, tra gli altri, due campi: nome e cognome e si voglia che il risultato di una query sia ottenuto su una sola colonna. Per estrarre in modo semplice nome e cognom ... continua ...
Quando si effettua una query i cui risultati si sviluppano su più colonne, si rivela utile una diversa disposizione del risultato mediante l'aggiunta, al termine della stessa, dell'opzione '\G'
mysql> select * from persone \G;
*************************** 1. row *************************** ... continua ...
Per installare MySQL come servizio di Windows, portarsi al prompt dei comandi, portarsi nel path relativo alla directory \mysql\bin e digitare:
mysqld-nt --install
Dall'avvio successivo all'operazione, MySQL verrà avviato come servizio, ossia in modalità trasparente all'utente. ... continua ...
Per rimuovere MySQL come servizio, su piattaforma Windows, portarsi al prompt dei comandi e dal path relativo alla directory in cui si trovano gli eseguibili posizionati a seguito dell'installazione di MySQL (es.c:\MySQL\bin), digitare:
net stop mysql
quindi:
mysqld-nt --remove
... continua ...
Per importare un file di testo all'interno di una tabella MySQL va utilizzato il comando LOAD DATA.
Perchè non si generino errori in fase di importazione, bisogna, però, fare attenzione a due aspetti fondamentali:
l'ordine dei campi del file di testo txt deve essere uguale a quello del ... continua ...
MySQL permette connessioni a database solo in base a uno schema che prevede l'utilizzo di user id, password e nome host da cui si effettua la connessione. Solo gli utenti abilitati nella tabella di sistema possono stabilire una connessione.
Gli utenti possono essere aggiunti, modificati o elimi ... continua ...
MySQL è il più popolare database open source del mondo. Almeno quattro sono gli aspetti in virtù dei quali MySQL ha raggiunto nel corso degli anni la sua popolarità:multipiattaforma: infatti, MySQL può essere utilizzato pressochè su qualsiasi piattaforma softw ... continua ...
Dopo aver effettuato il download dell'ultima release di MySQL, eseguire queste operaxzioni:
decomprimere l'archivio - untar -xvzf mysql-4-xx-xx-tar.gz
portarsi nella directory in cui sono stati decompressi i sorgenti - cd mysql ... continua ...
La principale risorsa è la casa madre, ossia http://www.mysql.com ... continua ...
Se si vuole dare la possibilità di operare su un server mysql a un utente remoto (dove per utente remoto si intende utente che non stabilisce la connessione da localhost) ci sono due regole da applicare in base alla tipologia di connessione che verrà stabilita.
Se l'utente da abili ... continua ...