Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoGustavo Valentino Modificato 10 anni fa
1
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre 2005 1 Utenti e privilegi del database - 1 Root è lutente amministratore predefinito, ma possiamo definire altri utenti con diritti più o meno limitati a seconda delle funzioni che devono svolgere. MySQL considera il nome utente/password e il nome della macchina (server locale se omesso) per la fase di identificazione. Tutti i dati relativi ai privilegi vengono registrati nel database creato automaticamente in fase di installazione del server e denominato mysql. Un utente può essere creato (*) esplicitamente, inserendo un record relativo allutente nella tabella mysql.user (database mysql, tabella user): mysql> INSERT INTO mysql.user (host,user,password) VALUES('%','gigi',PASSWORD('pwd')); (*) a partire dalla versione 5.0.3 di MySQL, per creare un utente è possibile anche utilizzare listruzione CREATE USER nome_utente IDENTIFIED BY 'password'
2
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre 2005 2 Utenti e privilegi del database - 2 … e un record nella tabella mysql.db: mysql> INSERT INTO mysql.db (host, db, user, select_priv, insert_priv, update_priv, delete_priv, create_priv, drop_priv) VALUES ('%','esami_studenti',gigi', 'Y', N', N', N', 'N', 'N'); Infine è necessario ricaricare in memoria la lista dei diritti aggiornata: mysql> FLUSH PRIVILEGES; Dopo queste operazioni lutente gigi potrà collegarsi al solo database esami_studenti per visualizzare i dati. NOTA: per collegarsi ad una macchina diversa da quella locale bisogna definire il parametro host (-h) allavvio del client: C:\>mysql -h nome_macchina -u nome_utente -p
3
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre 2005 3 Utenti e privilegi del database - 3 Possiamo creare un utente in modo implicito con listruzione GRANT: mysql> GRANT SELECT ON video_xxx.* TO gigi@localhost IDENTIFIED BY pwd; In questo caso non è necessario eseguire il FLUSH in quanto laggiornamento è immediato. Lasterisco (.*) indica tutte le tabelle, se avessimo indicato lasterisco anche come nome del database, il privilegio sarebbe stato concesso per tutti i database (*.*). E possibile utilizzare la clausola ALL [PRIVILEGES] al posto della SELECT per consentire tutte le operazioni sul database. Una volta concessi tutti i privilegi ad un utente, è possibile visulizzarli col comando: mysql> SHOW GRANTS FOR gigi;
4
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre 2005 4 Utenti e privilegi del database - 4 Per togliere un privilegio ad un utente usiamo listruzione REVOKE: mysql> REVOKE INSERT ON video_xxx.* FROM gigi@localhost; Per rimuovere un utente: mysql> DELETE FROM mysql.user WHERE user='gigi' AND host='localhost'; mysql> FLUSH PRIVILEGES; Oppure, solo dopo avere rimosso tutti i privilegi per lutente: mysql> DROP USER gigi@localhost; Altri comandi, dallovvio significato, relativi allutenza: mysql> SELECT CURRENT_USER(); mysql> SET PASSWORD FOR 'gigi'@'localhost'=PASSWORD(pwd2'); mysql> SELECT host, user FROM mysql.user; Nota: se al posto del nomehost mettiamo %, concediamo il privilegio per tutti gli host.
5
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre 2005 5 Esercitazione 4.1 Create lutente mionome@localhost, con i seguenti privilegi sul database video_xxx: 1 – Selezione di dati da tutte le tabelle 2 – Possibilità di aggiungere, aggiornare ed eliminare (INSERT, UPDATE, DELETE) dati dalle tabelle attori ed registi Collegatevi al database con lutenza mionome ed aggiornate il nome dellattore con codice 2 a George. Inserite un nuovo regista nel database: Codice_regista: 50 Cognome: Nero Nome: Franco
6
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre 2005 6 Salvataggio e ripristino dei dati 1 In MySQL il database è memorizzato in normali files, per cui farne il backup è relativamente semplice. 1-Possiamo semplicemente fare una copia di tutta la cartella MySQL. 2-Possiamo anche usare il comando mysqldump: C:\>mysqldump video_xxx -u root -p --tab= "C:\Programmi\MySQL\MySQL Server 4.1\data\backups (--tab consente di creare per ogni tabella due files, DDL e dati, nella cartella indicata) C:\backups>mysqldump --all-databases -u root -p > completo.dmp C:\backups>mysqldump video_xxx -u root -p > video.dmp NOTA: per specificare la password (in modo da schedulare il salvataggio) è possibile utilizzare lopzione --password=password_utente al posto di -p che è interattivo.
7
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre 2005 7 Salvataggio e ripristino dei dati 2 Per effettuare il backup solo di alcune tabelle, è possibile usare lopzione --tables: C:\backups>mysqldump video_xxx --tables attori prestiti -u root - p > attori_prestiti.dmp Per ripristinare i dati, basta passare al comando mysql il file contenente DDL e dati. Per testare la funzione, eliminiamo e ripristiniamo la tabella prestiti: 1-facciamo il backup della tabella prestiti: C:\backups>mysqldump video_xxx --tables prestiti -u root -p > prestiti.dmp 2-cancelliamo la tabella: mysql>drop table prestiti; 3-ripristiniamo la tabella: C:\backups>mysql video_xxx -u root -p < prestiti.dmp;
8
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre 2005 8 Import dei dati - 1 Per caricare dati esterni in MySQL è possibile utilizzare due strumenti: 1.il comando mysqlimport, lanciato dalla shell del sistema operativo. Per ogni file di testo indicato sulla linea di comando, mysqlimport non tiene conto della estensione ed usa la parte rimanente per determinare il nome della tabella nella quale importare il dati del file di testo. Creiamo un file di testo di nome attori.txt, nella cartella c:\backups, col seguente contenuto: 51;Marlon;Brando 52;Kirk;Douglas ed un altro file di nome registi.txt col seguente contenuto: 51;Oliver;Stone 52;Sergio;Leone Per importare i dati nel database possiamo procedere nel seguente modo:
9
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre 2005 9 Import dei dati - 2 C:\backups>mysqlimport video_xxx -u root -p --fields-terminated-by=";" c:\backups\attori.txt C:\backups>mysqlimport video_xxx -u root -p --fields-terminated-by=";" c:\backups\registi.txt ovviamente, lopzione --fields-terminated-by consente di specificare il separatore dei campi che, altrimenti, sarebbe il tabulatore (\t). 2. Laltro sistema per importare i dati è quello di utilizzare il comando SQL LOAD DATA. Creiamo un altro file di nome attori2.txt col seguente contenuto: 60;Sergio;Castellitto 61;Jane;Fonda Per importare i dati nel database possiamo eseguiamo: mysql> LOAD DATA INFILE C:\\backups\\attori2.txt' INTO TABLE attori FIELDS TERMINATED BY ';';
10
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre 2005 10 Esercitazione 4.2 1.Effettuare il backup completo del database mysql nel file mysql.dmp 2.Effettuare il backup delle tabelle clienti, attori e film del database video_xxx nel file video.dmp 3.Creare il database db_video 4.Ripristinare nel database appena creato le tabelle clienti, attori e film 5.Effettuare il backup del database db_video nella cartella C:\backups facendo in modo che per ogni tabella vi siano due files, uno per il DDL ed un altro per i dati; 6.Il file di testo registi2.txt contiene due righe: 75;Franco;Zeffirelli 76;Roberto;Benigni Scrivere i comandi per importare i dati nella tabella registi del database video_xxx (via S.O. e via SQL)
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.