« MySQL » : différence entre les versions
(8 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Category:Bases de données et annuaires]] | [[Category:Bases de données et annuaires]] | ||
[[Catégorie:Développement]] | |||
= Prendre en main MySQL = | = Prendre en main MySQL = | ||
Ligne 16 : | Ligne 16 : | ||
== Installation == | == Installation == | ||
Installer le paquet <code>mysql-server</ | Installer le paquet <span class="code">mysql-server</span> (Ubuntu) ou <span class="code">mysql</span> (Mandriva) - le nom est similaire sur une autre distrib' - selon [[Software-soft_gere-installation_logiciel|suivant la procédure habituelle]] de votre distribution. | ||
On notera que par défaut, MySQL stocke les bases de données dans le répertoire /var/lib/mysql. | On notera que par défaut, MySQL stocke les bases de données dans le répertoire /var/lib/mysql. | ||
Ligne 26 : | Ligne 26 : | ||
Démarrez MySQL avec la commande suivante (le service peut aussi s'appeler mysqld avec un « d » final sous certaines distributions): | Démarrez MySQL avec la commande suivante (le service peut aussi s'appeler mysqld avec un « d » final sous certaines distributions): | ||
<code>sudo /etc/init.d/mysql start</ | <span class="code">sudo /etc/init.d/mysql start</span> | ||
Vous pouvez vérifier s'il est bien lancé (status: started) en consultant son statut : | Vous pouvez vérifier s'il est bien lancé (status: started) en consultant son statut : | ||
<code>sudo /etc/init.d/mysql status</ | <span class="code">sudo /etc/init.d/mysql status</span> | ||
Arrêtez MySQL avec la commande : | Arrêtez MySQL avec la commande : | ||
<code>sudo /etc/init.d/mysql stop</ | <span class="code">sudo /etc/init.d/mysql stop</span> | ||
== Connexion == | == Connexion == | ||
Ligne 40 : | Ligne 40 : | ||
Si vous n'avez pas défini de mot de passe pour le compte administrateur (root) de la base MySQL, connectez-vous par la commande : | Si vous n'avez pas défini de mot de passe pour le compte administrateur (root) de la base MySQL, connectez-vous par la commande : | ||
<code>mysql -u root</ | <span class="code">mysql -u root</span> | ||
Si un mot de passe a été défini pour le compte administrateur, tapez : | Si un mot de passe a été défini pour le compte administrateur, tapez : | ||
<code>mysql -u root -p</ | <span class="code">mysql -u root -p</span> | ||
Vous êtes alors connecté à la ligne de commande MySQL où vous pourrez taper vos requêtes : <code>> mysql </ | Vous êtes alors connecté à la ligne de commande MySQL où vous pourrez taper vos requêtes : <span class="code">> mysql </span>. | ||
Nous verrons par la suite comment créer d'autres comptes et définir un mot de passe (utile pour en mettre un pour le compte administrateur). | Nous verrons par la suite comment créer d'autres comptes et définir un mot de passe (utile pour en mettre un pour le compte administrateur). | ||
Ligne 60 : | Ligne 60 : | ||
Créer un utilisateur dans la base locale (localhost) : | Créer un utilisateur dans la base locale (localhost) : | ||
<code>CREATE user "nom_utilisateur"@"localhost";</ | <span class="code">CREATE user "nom_utilisateur"@"localhost";</span> | ||
Attribuer un mot de passe à un utilisateur : | Attribuer un mot de passe à un utilisateur : | ||
<code>SET password FOR "nom_utilisateur"@"localhost" = password("mot_de_passe");</ | <span class="code">SET password FOR "nom_utilisateur"@"localhost" = password("mot_de_passe");</span> | ||
Modifier un mot de passe d'un utilisateur : | Modifier un mot de passe d'un utilisateur : | ||
<code>UPDATE user SET password = password("nouveau_mot_de_passe") where user = "nom_utilisateur" and host="localhost";</ | <span class="code">UPDATE user SET password = password("nouveau_mot_de_passe") where user = "nom_utilisateur" and host="localhost";</span> | ||
Supprimer un utilisateur : | Supprimer un utilisateur : | ||
<code>DROP user "nom_utilisateur"@"localhost";</ | <span class="code">DROP user "nom_utilisateur"@"localhost";</span> | ||
Donner tous les droits à un utilisateur sur une base de données : | Donner tous les droits à un utilisateur sur une base de données : | ||
<code>GRANT ALL ON nom_base.* TO "nom_utilisateur"@"localhost";</ | <span class="code">GRANT ALL ON nom_base.* TO "nom_utilisateur"@"localhost";</span> | ||
Enlever tous les droits à un utilisateur sur une base de données : | Enlever tous les droits à un utilisateur sur une base de données : | ||
<code>REVOKE ALL privileges ON nom_base.* FROM "nom_utilisateur"@"localhost";</ | <span class="code">REVOKE ALL privileges ON nom_base.* FROM "nom_utilisateur"@"localhost";</span> | ||
=== Manipuler les bases de données === | === Manipuler les bases de données === | ||
Ligne 86 : | Ligne 86 : | ||
Lister les bases présentes : | Lister les bases présentes : | ||
<code>SHOW DATABASES;</ | <span class="code">SHOW DATABASES;</span> | ||
Se connecter à une base : | Se connecter à une base : | ||
<code>USE nom_base;</ | <span class="code">USE nom_base;</span> | ||
Créer une base : | Créer une base : | ||
<code>CREATE DATABASE nom_base;</ | <span class="code">CREATE DATABASE nom_base;</span> | ||
Supprimer une base : | Supprimer une base : | ||
<code>DROP DATABASE nom_de_la_base;</ | <span class="code">DROP DATABASE nom_de_la_base;</span> | ||
== Manipuler les tables == | == Manipuler les tables == | ||
Ligne 104 : | Ligne 104 : | ||
Lister les tables de la base active : | Lister les tables de la base active : | ||
<code>SHOW TABLES;</ | <span class="code">SHOW TABLES;</span> | ||
Afficher la structure d'une table : | Afficher la structure d'une table : | ||
<code>DESCRIBE nom_table;</ | <span class="code">DESCRIBE nom_table;</span> | ||
Créer une table : | Créer une table : | ||
<code>CREATE TABLE nom_table ( listes des composants avec leur type ) ;</ | <span class="code">CREATE TABLE nom_table ( listes des composants avec leur type ) ;</span> | ||
exemple : | exemple : | ||
Ligne 128 : | Ligne 128 : | ||
Supprimer une table : | Supprimer une table : | ||
<code>DROP table nom_table;</ | <span class="code">DROP table nom_table;</span> | ||
Renommer une table : | Renommer une table : | ||
<code>ALTER TABLE nom_table RENAME AS nouveau_nom_table;</ | <span class="code">ALTER TABLE nom_table RENAME AS nouveau_nom_table;</span> | ||
== Export et import d'une base == | == Export et import d'une base == | ||
Ligne 138 : | Ligne 138 : | ||
Pour exporter une base dans un fichier, tapez la commande dans un shell : | Pour exporter une base dans un fichier, tapez la commande dans un shell : | ||
<code>mysqldump -u root -p nom_base > nom_base_sauvegarde.sql</ | <span class="code">mysqldump -u root -p nom_base > nom_base_sauvegarde.sql</span> | ||
Pour importer une base à partir d'un fichier : | Pour importer une base à partir d'un fichier : | ||
<code>mysql -u root -p nom_base < nom_base_sauvegarde.sql</ | <span class="code">mysql -u root -p nom_base < nom_base_sauvegarde.sql</span> | ||
== Changer le mot de passe root quand on l'a oublié == | == Changer le mot de passe root quand on l'a oublié == | ||
Ligne 148 : | Ligne 148 : | ||
Si on oublie le mot de passe root de MySQL, pas de panique ! Voici comment le modifier. | Si on oublie le mot de passe root de MySQL, pas de panique ! Voici comment le modifier. | ||
Commencez par arrêter le SGBD par la commande : <code>/etc/init.d/mysql stop</ | Commencez par arrêter le SGBD par la commande : <span class="code">/etc/init.d/mysql stop</span> (le service peut s'appeler mysqld avec un « d » final sous certaines distributions). | ||
Redémarrez le avec les options -skip-grant-tables pour que MySQL zappe les permissions et --skip-networking pour qu'il ne soit accessible que localement. Faites donc : <code>/etc/init.d/mysql --skip-grant-tables --skip-networking &</ | Redémarrez le avec les options -skip-grant-tables pour que MySQL zappe les permissions et --skip-networking pour qu'il ne soit accessible que localement. Faites donc : <span class="code">/etc/init.d/mysql --skip-grant-tables --skip-networking &</span> | ||
Loguez vous via la commande <code>mysql mysql</ | Loguez vous via la commande <span class="code">mysql mysql</span> puis tapez la requête de modification de mot de passe : <span class="code">UPDATE user SET password = password("nouveau_mot_de_passe") where user = "root" and host="localhost";</span> | ||
Il ne vous reste qu'à redémarrer MySQL : <code>/etc/init.d/mysql restart</ | Il ne vous reste qu'à redémarrer MySQL : <span class="code">/etc/init.d/mysql restart</span> | ||
== Liens == | == Liens == | ||
Ligne 170 : | Ligne 170 : | ||
<br/> | <br/> | ||
<br/> | <br/> | ||
'''<b>[[ | '''<b>[[Admin-index|@ Retour à la rubrique Administration système]]</b>''' | ||
<br/> | |||
<br/> | |||
'''<b>[[Dev-index|@ Retour à la rubrique Développement]]</b>''' | |||
<br/> | |||
{{Copy|2010|[[Utilisateur:Jiel|Jiel Beaumadier]]|FDL}} | {{Copy|2010|[[Utilisateur:Jiel|Jiel Beaumadier]]|FDL}} |
Dernière version du 4 décembre 2023 à 21:39
Prendre en main MySQL
par Jiel
Introduction
Cette documentation a pour but de rapidement pouvoir utiliser et maîtriser quelques commande de base de MySQL. Elle suppose que vous avez déjà quelques connaissances basiques en base de données. Pour rappel, un système de gestion de base de données (SGBD) permet de manipuler et d'administrer des bases de données identifiées par un nom. Chaque base est composée de tables qui contiennent des données.
MySQL est un SGBD sous double licence. La licence varie en fonction de l'utilisation qui en est faite : dans un produit libre, la licence est la GPL et dans un produit propriétaire, c'est une licence propriétaire et payante qui s'applique.
La société MySQL AB qui éditait MySQL a été acheté en 2008 par Sun Microsystems pour un milliard de dollars, et Sun Microsystems a été acquis par Oracle Corporation en 2009. MySQL est donc désormais la propriété d'Oracle.
Installation
Installer le paquet mysql-server (Ubuntu) ou mysql (Mandriva) - le nom est similaire sur une autre distrib' - selon suivant la procédure habituelle de votre distribution.
On notera que par défaut, MySQL stocke les bases de données dans le répertoire /var/lib/mysql.
Lancement
Les commandes suivantes sont à lancer en root ou bien en les précédant de sudo (comme ci-dessous).
Démarrez MySQL avec la commande suivante (le service peut aussi s'appeler mysqld avec un « d » final sous certaines distributions):
sudo /etc/init.d/mysql start
Vous pouvez vérifier s'il est bien lancé (status: started) en consultant son statut :
sudo /etc/init.d/mysql status
Arrêtez MySQL avec la commande :
sudo /etc/init.d/mysql stop
Connexion
Si vous n'avez pas défini de mot de passe pour le compte administrateur (root) de la base MySQL, connectez-vous par la commande :
mysql -u root
Si un mot de passe a été défini pour le compte administrateur, tapez :
mysql -u root -p
Vous êtes alors connecté à la ligne de commande MySQL où vous pourrez taper vos requêtes : > mysql .
Nous verrons par la suite comment créer d'autres comptes et définir un mot de passe (utile pour en mettre un pour le compte administrateur).
Requêtes MySQL
Les requêtes sont des commandes en langage SQL : à ce titre, elles contiennent des mots clefs du langage (l'usage veut qu'on les mette en majuscules), des paramètres et elles se terminent par un point-virgule.
Ci-dessous ne figurent que des requêtes basiques.
Manipuler les utilisateurs
Créer un utilisateur dans la base locale (localhost) :
CREATE user "nom_utilisateur"@"localhost";
Attribuer un mot de passe à un utilisateur :
SET password FOR "nom_utilisateur"@"localhost" = password("mot_de_passe");
Modifier un mot de passe d'un utilisateur :
UPDATE user SET password = password("nouveau_mot_de_passe") where user = "nom_utilisateur" and host="localhost";
Supprimer un utilisateur :
DROP user "nom_utilisateur"@"localhost";
Donner tous les droits à un utilisateur sur une base de données :
GRANT ALL ON nom_base.* TO "nom_utilisateur"@"localhost";
Enlever tous les droits à un utilisateur sur une base de données :
REVOKE ALL privileges ON nom_base.* FROM "nom_utilisateur"@"localhost";
Manipuler les bases de données
Lister les bases présentes :
SHOW DATABASES;
Se connecter à une base :
USE nom_base;
Créer une base :
CREATE DATABASE nom_base;
Supprimer une base :
DROP DATABASE nom_de_la_base;
Manipuler les tables
Lister les tables de la base active :
SHOW TABLES;
Afficher la structure d'une table :
DESCRIBE nom_table;
Créer une table :
CREATE TABLE nom_table ( listes des composants avec leur type ) ;
exemple :
CREATE TABLE personnes (
id tinyint(4) unsigned NOT NULL auto_increment, nom varchar(80) NOT NULL, prenom varchar(80) NOT NULL, email varchar(32), PRIMARY KEY (id)
);
Supprimer une table :
DROP table nom_table;
Renommer une table :
ALTER TABLE nom_table RENAME AS nouveau_nom_table;
Export et import d'une base
Pour exporter une base dans un fichier, tapez la commande dans un shell :
mysqldump -u root -p nom_base > nom_base_sauvegarde.sql
Pour importer une base à partir d'un fichier :
mysql -u root -p nom_base < nom_base_sauvegarde.sql
Changer le mot de passe root quand on l'a oublié
Si on oublie le mot de passe root de MySQL, pas de panique ! Voici comment le modifier.
Commencez par arrêter le SGBD par la commande : /etc/init.d/mysql stop (le service peut s'appeler mysqld avec un « d » final sous certaines distributions).
Redémarrez le avec les options -skip-grant-tables pour que MySQL zappe les permissions et --skip-networking pour qu'il ne soit accessible que localement. Faites donc : /etc/init.d/mysql --skip-grant-tables --skip-networking &
Loguez vous via la commande mysql mysql puis tapez la requête de modification de mot de passe : UPDATE user SET password = password("nouveau_mot_de_passe") where user = "root" and host="localhost";
Il ne vous reste qu'à redémarrer MySQL : /etc/init.d/mysql restart
Liens
Manuel de référence de MySQL 5.0 : http://dev.mysql.com/doc/refman/5.0/fr/index.html
Voir aussi sur Léa-Linux :
- Installation de LAMP : GNU/Linux, Apache, MySQL, PHP
- Installation d'un serveur LAMP en mode texte
- Protection d'un serveur LAMP
- ProFTPD, MySQL et Quota
- Postfix, Courier Imap & Pop, MySQL et Quota avec filtre AntiSpam et antivirus
@ Retour à la rubrique Administration système
@ Retour à la rubrique Développement
Copyright
© 2010 Jiel Beaumadier
Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la GNU Free Documentation License, Version 1.2 ou n'importe quelle version ultérieure publiée par la Free Software Foundation; sans section invariante, sans page de garde, sans entête et sans page finale. |