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 [18/10/2014 19:53] paskal [Utilisation de mysql] |
||
---|---|---|---|
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 : ==== | ||
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** créer la base, et puis donne les privilèges à un simple utilisateur | ||
+ | |||
+ | __Pour donner les privilèges à un simple utilisateur__ | ||
+ | doit être sous root, puis: | ||
+ | <code bash> | ||
+ | GRANT ALL PRIVILEGES ON agenda_net.* TO 'user00'@'localhost' IDENTIFIED BY 'pwd_user00'; | ||
+ | FLUSH PRIVILEGES; | ||
+ | </code> | ||
+ | \\ | ||
+ | \\ | ||
+ | ====Créer 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 ==== | ||
Ligne 125: | Ligne 146: | ||
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 215: | Ligne 236: | ||
'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 340: | Ligne 367: | ||
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 402: | ||
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/ |