Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:programmation:mysql [07/07/2013 20:58] justmmt |
doc:programmation:mysql [19/10/2014 10:17] paskal [Utilisation de mysql] import/export |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== MYSQL ====== | + | ====== MySQL ====== |
+ | * Objet : le système de gestion de bases de données relationnelles MySQL | ||
+ | * Niveau requis : {{tag>avisé}} | ||
+ | * Commentaires : //installer, configurer et utiliser le SGBDR MySQL.// | ||
+ | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) | ||
+ | * Suivi : | ||
+ | * Créé par [[user> smolski]] 24/07/2010 | ||
+ | * Testé par [[user> paskal]] 18/10/2014 | ||
+ | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=2806 | c'est ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
- | ''mysql'' est un serveur de base de données très souvent utilisé avec le langage de création de pages web dynamiques : PHP. | ||
- | ''mysql'' dérive directement de SQL (Structured Query Language) qui est un langage de requête vers les bases de données exploitant le modèle relationnel. \\ | + | ===== Introduction ===== |
- | Il en reprend la syntaxe mais n'en conserve pas toute la puissance puisque de nombreuses fonctionnalités de ''SQL'' n'apparaissent pas dans ''mysql'' (sélections imbriquées, clés étrangères...). | + | MySQL est un serveur de base de données très souvent utilisé avec le langage de création de pages web dynamiques : PHP. |
- | On peut installer le serveur ''mysql'' seul pour l'utiliser sans réseau. \\ | + | MySQL dérive directement de SQL (Structured Query Language) qui est un langage de requête vers les bases de données exploitant le modèle relationnel. \\ |
- | Sinon, il est nécessaire d'y ajouter une application comme **apache**. | + | Il en reprend la syntaxe mais n'en conserve pas toute la puissance puisque de nombreuses fonctionnalités de SQL n'apparaissent pas dans MySQL (sélections imbriquées, clés étrangères...). |
- | Voir **Installation d'un serveur LAMP** : | + | On peut installer le serveur MySQL seul pour l'utiliser sans réseau. \\ |
- | * [[config:apache | Un Serveur LAMP]] | + | Sinon, il est nécessaire d'y ajouter une application comme **Apache** (voir [[:doc:reseau:apache2:multisite | Installation d'un serveur LAMP]]). |
===== Installation de mysql ===== | ===== Installation de mysql ===== | ||
- | <code bash>aptitude install mysql-server</code> | + | <code root>aptitude install mysql-server</code> |
===== Sécurisation de mysql ===== | ===== Sécurisation de mysql ===== | ||
- | Dans votre terminal root, tapez : | + | En tant que super-utilisateur, tapez : |
- | mysql_secure_installation | + | <code root>mysql_secure_installation</code> |
Et utilisez le mot de passe que vous avez déjà indiqué à l'installation. | Et utilisez le mot de passe que vous avez déjà indiqué à l'installation. | ||
Ligne 56: | Ligne 63: | ||
===== Utilisation de mysql ===== | ===== Utilisation de mysql ===== | ||
- | <note important>Rédaction et tests en cours... smolski 24/07/2010</note> | + | ==== Accéder à mysql ==== |
- | Un lien formidable où télécharger un pdf à conserver : | + | <code user>mysql -u root -p</code> |
- | * http://cyberzoide.developpez.com/php4/mysql/ | + | Enter password: |
+ | Welcome to the MySQL monitor. Commands end with ; or \g. | ||
+ | Your MySQL connection id is 29 | ||
+ | Server version: 5.5.38-0+wheezy1 (Debian) | ||
- | ==== Accéder à mysql : ==== | + | Type 'help;' or '\h' for help. Type '\c' to clear the buffer. |
- | <code bash> | + | mysql> |
- | $ mysql -u root -p | + | |
- | Enter password: | + | |
- | Welcome to the MySQL monitor. Commands end with ; or \g. | + | |
- | Your MySQL connection id is 29 | + | |
- | Server version: 5.0.51a-24+lenny4 (Debian) | + | |
- | Type 'help;' or '\h' for help. Type '\c' to clear the buffer. | ||
- | mysql> | + | <note important>**Renseignez :** \\ |
- | </code> | + | Enter password: \\ |
- | **Renseignez :** | + | avec le //passwd mysql// et non le //passwd root// du système. |
- | <code>Enter password:</code> | + | </note> |
- | <note tip>''avec le //passwd mysql// et non le //passwd root// du système.''</note> | + | |
- | ==== Tableau des commandes mysql : ==== | + | ==== Tableau des commandes mysql ==== |
Les commandes mysql depuis l'appel dans un terminal ou en console. | Les commandes mysql depuis l'appel dans un terminal ou en console. | ||
Ligne 108: | Ligne 111: | ||
| | | | | | | | | | ||
- | ==== Créer une base de donnée : ==== | + | ==== Créer une base de donnée ==== |
**Nota :** \\ | **Nota :** \\ | ||
Ligne 116: | Ligne 119: | ||
Query OK, 1 row affected (0.00 sec) | Query OK, 1 row affected (0.00 sec) | ||
+ | Souvent, les simples utilisateurs ne peuvent pas créer une base des données, donc **root** doit créer la base et donner les privilèges à un simple utilisateur. | ||
+ | |||
+ | __Pour donner les privilèges à un simple utilisateur__, se connecter sous l'utilisateur **root de mysql**, puis : | ||
+ | <code bash> | ||
+ | GRANT ALL PRIVILEGES ON agenda_net.* TO 'user00'@'localhost' IDENTIFIED BY 'pwd_user00'; | ||
+ | FLUSH PRIVILEGES; | ||
+ | </code> | ||
+ | \\ | ||
+ | \\ | ||
+ | ==== Créer un simple utilisateur ==== | ||
+ | Doit-être executer sous l'utilisateur root **de mysql** | ||
+ | <code bash>CREATE USER 'login'@'hote' IDENTIFIED BY 'mot_de_passe'; | ||
+ | </code> | ||
==== Accéder à une base de donnée ==== | ==== Accéder à une base de donnée ==== | ||
=== Directement depuis le terminal : === | === Directement depuis le terminal : === | ||
+ | <code user>mysql -D agenda_net -u root -p</code> | ||
<code> | <code> | ||
- | $ mysql -D agenda_net -u root -p | ||
Enter password: | Enter password: | ||
Welcome to the MySQL monitor. Commands end with ; or \g. | Welcome to the MySQL monitor. Commands end with ; or \g. | ||
Your MySQL connection id is 77 | Your MySQL connection id is 77 | ||
- | Server version: 5.0.51a-24+lenny4 (Debian) | + | Server version: 5.5.38-0+wheezy1 (Debian) |
Type 'help;' or '\h' for help. Type '\c' to clear the buffer. | Type 'help;' or '\h' for help. Type '\c' to clear the buffer. | ||
Ligne 134: | Ligne 150: | ||
mysql> use agenda_net | mysql> use agenda_net | ||
Database changed | Database changed | ||
+ | |||
+ | |||
+ | ==== Importer/exporter une base de données ==== | ||
+ | Depuis un terminal : | ||
+ | <code user>mysqldump -u user00 -p agenda_net > agenda.sql</code> | ||
+ | Après avoir entré le mot de passe demandé, le fichier ''agenda.sql'' sera créé dans le répertoire /home/user00. \\ | ||
+ | Il suffit ensuite de télécharger ce fichier de dump par [[:doc:reseau:ftp | FTP]] ou mieux encore par [[:doc:reseau:sftp | SFTP]]. \\ | ||
+ | \\ | ||
+ | À l'inverse, après avoir téléversé un fichier dump sur un serveur, la commande : | ||
+ | <code user>mysqldump -u user01 -p adresse_net < adresses.sql</code> | ||
+ | remplira la base de données ''adresse_net'' à partir des données contenues dans le fichier ''adresses.sql''. | ||
==== Quitter mysql ==== | ==== Quitter mysql ==== | ||
Ligne 139: | Ligne 166: | ||
mysql> quit | mysql> quit | ||
- | ==== Tableau des codes mysql : ==== | + | ==== Tableau des codes mysql ==== |
=== Codes des chaînes de caractères et les textes : === | === Codes des chaînes de caractères et les textes : === | ||
Ligne 180: | Ligne 207: | ||
- | ==== Créer des tables : ==== | + | ==== Créer des tables ==== |
<note tip>Nous devons auparavant nous situer dans la base de donnée créée pour y créer des tables bien sûr !</note> | <note tip>Nous devons auparavant nous situer dans la base de donnée créée pour y créer des tables bien sûr !</note> | ||
Ligne 215: | Ligne 242: | ||
'Site Debian, la ou Debian est le plus simple', | 'Site Debian, la ou Debian est le plus simple', | ||
'1'); | '1'); | ||
+ | </code> | ||
+ | |||
+ | ==== Vérification d'une table ==== | ||
+ | C'est pour voir le code qui a servit a créer la table00: | ||
+ | <code bash> | ||
+ | show create table00\G | ||
</code> | </code> | ||
Ligne 308: | Ligne 341: | ||
</code> | </code> | ||
- | ===== Option alter -Modification des tables ===== | + | ===== Option alter - Modification des tables ===== |
==== Option add / first / after / drop - Ajouter/Ôter une colonne dans une table : ==== | ==== Option add / first / after / drop - Ajouter/Ôter une colonne dans une table : ==== | ||
Ligne 340: | Ligne 373: | ||
Query OK, 6 rows affected (0.00 sec) | Query OK, 6 rows affected (0.00 sec) | ||
Records: 6 Duplicates: 0 Warnings: 0 | Records: 6 Duplicates: 0 Warnings: 0 | ||
+ | </code> | ||
+ | |||
+ | ===Vider une table=== | ||
+ | Il faut que la table à vider ne soit pas relier à aucune autre table: | ||
+ | <code bash> | ||
+ | truncate table00; | ||
+ | </code> | ||
+ | |||
+ | Ainsi, si la table possède des relations avec d'autre table alors il faut supprimer cette relation | ||
+ | <code bash> | ||
+ | alter table table_a_relation drop foreign key nom_relation; | ||
+ | </code> | ||
+ | |||
+ | Pour voir le nom_relation: | ||
+ | <code bash> | ||
+ | show create table table_a_relation; #ou | ||
+ | show create table table_a_relation\G | ||
</code> | </code> | ||
Ligne 358: | Ligne 408: | ||
Records: 6 Duplicates: 0 Warnings: 0 | Records: 6 Duplicates: 0 Warnings: 0 | ||
</code> | </code> | ||
- | \\ | ||
- | \\ | ||
- | \\ | ||
- | ''**À suivre**....'' --- //[[joel.smolski@gmail.com|smolski]] 2010/07/27 09:00// :-) | ||
+ | \\ | ||
====Vérification d'une base==== | ====Vérification d'une base==== | ||
C'est pour vérifier les relations entre les tables: | C'est pour vérifier les relations entre les tables: | ||
<code bash> | <code bash> | ||
- | select * from information_schema.referential_constraints where constraint_schema = 'YOUR_DB'; | + | select * from information_schema.referential_constraints where constraint_schema = 'nom_base'; |
</code> | </code> | ||
+ | \\ | ||
+ | \\ | ||
+ | =====Utilisation avancée===== | ||
+ | |||
+ | ====Trigger==== | ||
+ | **Trigger**: pour executer des commandes sql après certains actions,\\ | ||
+ | appeler aussi un __déclenheur__ | ||
+ | \\ | ||
+ | __ex:__ après l'insertion dans une __table00__ on veut une insertion dans __table01__: | ||
+ | Ainsi,\\ | ||
+ | 1) on crée une autre delimiter, | ||
+ | 2) on crée le trigger, | ||
+ | 3) on change le trigger par sa valeur par défaut, (';') | ||
+ | |||
+ | ===Création trigger=== | ||
+ | <code bash> | ||
+ | delimiter | #pour la creation du trigger | ||
+ | create trigger trigger00 after insert on table00 for each row | ||
+ | begin | ||
+ | #instruction of the trigger | ||
+ | insert into table01(col00, col01) values('val00', 'val01'); | ||
+ | end | ||
+ | delimiter ; #on remet le trigger par sa valeur par défaut | ||
+ | </code> | ||
+ | |||
+ | ===Vérification des triggers=== | ||
+ | c'est pour voir les triggers qui sont dans la base | ||
+ | <code bash> | ||
+ | show triggers \G | ||
+ | </code> | ||
+ | \\ | ||
+ | Ainsi, on a les triggers qui sont présents, \\et | ||
+ | pour voir la définition du trigger00: | ||
+ | <code bash> | ||
+ | show create trigger trigger01; | ||
+ | </code> | ||
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ''**À suivre**....'' --- //[[joel.smolski@gmail.com|smolski]] 2010/07/27 09:00// :-) | ||
+ | |||
- | ===== Liens : ===== | + | ===== Liens ===== |
- | * http://dev.mysql.com/doc/refman/5.0/fr/ Un site en français proposé par martin ! :-) | + | * http://dev.mysql.com/doc/refman/5.7/en/ |
+ | * Un lien formidable où télécharger un pdf à conserver : http://cyberzoide.developpez.com/php4/mysql/ |