Professional Documents
Culture Documents
REPUBLIQUE DU SENEGAL
Télécommunications Réseaux
Licence 2
RAPPORT DU COURS:
Il suffit d'editer le fichier my.cnf pour pointer bindadress : 0.0.0.0 et verifier que le port est 3306 .
Une fois ceci fait il suffira tout juste de se connecter a la base de données voulue tout en indiquant
le mot de passe que nous avons défini ci-dessus.
Sauvegarde de la base EC2LT en conservant les requetes sql dans un fichier a préciser (EC2LT.sql) :
Une fois la base de données (EC2LT) sauvegardée , on peut se connecter pour supprimer une table
dans le but de pouvoir la restaurer vu qu'elle a été sauvegardée :
Pour créer un script , il suffit de créer un fichier , de l’éditer et d’y mettre les commandes voulues .
Ici nous avons créer le fichier script1.sh .
On édite ce fichier pour y mettre nos commandes : on tape nano script1.sh
Maintenant éssayons de mettre dans notre script la commande mysqldump qui permet de
sauvegarder une base données (dbec2lt) dans un fichier (/opt/sauve-23052018.sql) :
A l’éxécution du script , la sauvegarde de la base de données indiquée (dbec2lt) sera alors réalisée
en meme temps que l’exécution des autres commandes dans notre script .
Avant d’éxécuter ce script , il faudra d’abord supprimer le fichier contenant la sauvegarde de la base
dbec2lt qui a été généré lorsqu’on a tapé la commande mysqldump .
Nous voulons a present éxécuter notre script (script1.sh) a une date bien précise . Pour se faire il
suffit juste de faire un nouveau cront: on tape crontab -e et faire l’ajout du cront .
Dans ce cront , nous souhaitons l’éxécution du script a 9h 25 min . Il faut nécéssairement mettre le
chemin absolue du fichier script1.sh .
Juste apres il faudra supprimer le fichier qui sauvegarde la base dbec2lt avant la date indiquée dans
le cront pour que la vérification de la sauvegarde soit fiable apres l’éxécution du script .
Avant l’heure d’éxécution , listons /opt pour s’assurer que le fichier est supprimé.
A l’heure indiquée dans le cront il faudra lister le répértoire /opt dans lequel se trouve le fichier de
sauvegarde .
NB : Dans le fichier (script1.sh) on devra mettre le mot de pass de la base de données dans la
commande mysqldump sinon la sauvegarde n’aura pas lieu .
Nous voulons maintenant faire une sauvegarde avec mysqldump sans indiquer le mot de pass sur la
meme ligne de commande car c’est pas sur .
Nous devons d’abord créer un fichier (passfarba) et y mettre le mot de pass de la base de données
ensuite dans la commande mysqldump juste apres le parametre -p on met [$(cat
/etc/phpmyadmin/passfarba)] . On y précise ainsi le chemin absolu du fichier (passfarba) contenant
le mot de pass de notre server mysql .
On remarque bien que la commande refuse de s’éxécuter car le mot de pass indiqué dans le fichier
passfarba n’est pas le bon .
Créeons une base de données ec2lt dans laquelle on inscrit deux tables etudiants et classe :
champs etudiants (id, matricule, nom, prenom, idclass, adresse, numero, mdp ) .
*etudiants :
*classe :
Sauvegardons notre base ec2lt avec MYSQLDUMP :
La tache serait un peu fastidieuse si , pour lire les champs précédents , on devait retaper la
commande précédente ou bien taper une autre commande pour selectionner d’autres champs d’ou
l’idée de mettre en place une table virtuelle (VIEW) .
Un view ou table virtuelle permet de recuperer des champs de tables créés dans une base de
données pour une lecture selective ou bien cacher des informations .
Par exemple si l’administrateur ne souhaite pas qu ‘une secretaire ait l’acces sur certains champs ,
ces derniers peuvent etre recupérés dans un view .
Il se peut aussi que l’admin souhaite regrouper certains champs appartenant a des tables differentes
dans une table virtuelle .
Si on a plusieurs champs dans une table et que l’on souhaite lire que certains , on peut aussi créér un
view .
Exemple : Créeons un view (contacts) qui recupére seulement les champs nom, prenom et
numero de la classe etudiants .
Créeons une table virtuelle ou view (EC2LT) qui recupére les champs nom, prenom et numero de
etudiants et le champs nom de classe:
On a créée le view EC2LT .
En tapant la commande show tables , on remarquera que les view (EC2LT et contacts) seront
affichés aussi :
Maintenant on va faire une insertion dans la table etudiants et voir si on peut la lire dans la table
virtuelle contacts .
Tout d’abord nous allons lire la table etudiants afin que la vérification soit fiable :
On a inséré Penda DIAGNE dans la table etudiants et puis ensuite on le retrouve dans la table
virtuelle contacts a la lecture .
On remarque bien qu’une fois la table virtuelle créée ,elle recupére de facon dynamique les champs
nécéssaires ; c’est comme si on avait créé un lien entre les deux tables .
Maintenant on souhaite afficher seulement le nombre d’enregistrements dans notre table etudiants ;
on fera comme nous le montre la capture suivante :
A la place de count(*) qui désigne le nombre d’enregistrement sur la figure précédente , on peut
créer un ALIAS qui nous permettra de bien comprendre que le chiffre 6 signifie nombre
d’enregistrements ; on tape la commande suivante :
idmatiere matieres
1 RESEAUX
2 TELEPHONIE
3 BASES DE DONNÉES AVANCÉES
On remarque bien qu’avant de faire les insertions on a lu les enregistrements des champs de
etudiants afin de voir les id des étudiants . En réalité le idetudiant de notes doit correspondre avec le
id de etudiants .
Ici on remarque que les notes sont données par ordre des id .
Ici on voit bien pour lire la note moyenne , on a fait une requéte nous permettant d’afficher le
rapport de la somme des notes sur le nombre d’enregistrement de la table notes .
Maintenant on se propose de lire seulement les notes qui sont superieur a la moyenne :
Nous voulons a présent lire le nom , le prenom et la note des étudiants qui ont eu la moyenne ou
plus .
Il y’a probléme car les champs nom et prenom ne se trouvent pas dans la table notes mais plutot
dans celle etudiants . Pour pouvoir gerer ce cas , on va proceder comme nous le montre la capture
suivante :
On peut aussi remplacer la condition : note >=13 par celle : note>=(select avg(note) from notes ) .
TRANSACTIONS
Dans cette partie , nous allons voir certaines opérations que l’on rencontre dans des entreprises
comme les banques , les agences wari ….Ce sont des transactions qui sont réalisées au niveau des
comptes des clients qui souhaitent faire quelques actions .
Pour bien illustrer les transactions on va devoir créer une table appelée compte qui aura numero et
montant comme champs .
On vérifie alors si cette table supporte les transactions auquel cas Engine = InnoDB sur l’affichage
de la commande : show table status \G .
La condition vérifiée donc on peut passer aux insertions :
On va réaliser deux transactions avec le numéro 773368098 et regarder ce qui se passe au niveau du
compte . La premiere consiste a retiré 25000fr et la seconde a remettre la somme dans le compte .
Cela se fera comme suit :
Apres avoir réalisé cette premiere transaction , on remarque que dans dans le compte ca été
appliqué .
Pour pouvoir suspendre une transaction , il faut avant tout taper : set autocommit = 0 et puis juste
apres la transaction que l’on souhaite suspendre on tape rollback .
NB : Par defaut set autocommit=1 . Cette valeur par defaut permet a toute transaction d’etre prise en
compte par le syteme c’est a dire validée aussitôt qu’elle a été réalisée . Du coup on ne pourra pas
annuler une transaction a moins de faire un update a nouveau .
Lorsque set autocommit=0 , on pourra suspendre une transaction a chaque fois qu’on le décidera en
tapant rollback mais aussi valider une opération avec la commande commit .
On se propose de mettre set autocommit=0 et d’essayer de suspendre une transaction puis ensuite
la valider .
- suspensions transaction :
-validation transaction :
On remarque bien qu’une fois la transaction validée avec commit , on ne plus la suspendre avec
rollback .
Cette fois-ci , on se propose de débité le compte qui a pour numéro 773368098 une somme de
35000fr pour déposer au compte ayant le numéro 778745100 :
On remarque qu’une somme de 35000fr s’est retiré du compte de 773368098 pour s’ajouter a
l’autre compte d’ou les deux transactions ont réussi .