« MySQL » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
(balises code)
(5 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[Category:Réseau]]
[[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</code> (Ubuntu) ou <code>mysql</code> (Mandriva) - le nom est similaire sur une autre distrib' - selon [[Software-soft_gere-installation_logiciel|suivant la procédure habituelle]] de votre distribution.
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</code>
<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</code>
<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</code>
<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</code>
<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</code>
<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 </code>.
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";</code>
<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");</code>
<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";</code>
<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";</code>
<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";</code>
<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";</code>
<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;</code>
<span class="code">SHOW DATABASES;</span>


Se connecter à une base :
Se connecter à une base :


<code>USE nom_base;</code>
<span class="code">USE nom_base;</span>


Créer une base :
Créer une base :


<code>CREATE DATABASE nom_base;</code>
<span class="code">CREATE DATABASE nom_base;</span>


Supprimer une base :
Supprimer une base :


<code>DROP DATABASE nom_de_la_base;</code>
<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;</code>
<span class="code">SHOW TABLES;</span>


Afficher la structure d'une table :
Afficher la structure d'une table :


<code>DESCRIBE nom_table;</code>
<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 ) ;</code>
<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;</code>
<span class="code">DROP table nom_table;</span>


Renommer une table :
Renommer une table :


<code>ALTER TABLE nom_table RENAME AS nouveau_nom_table;</code>
<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</code>
<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</code>
<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</code> (le service peut s'appeler mysqld avec un « d » final sous certaines distributions).
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 &</code>
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</code> puis tapez la requête de modification de mot de passe : <code>UPDATE user SET password = password("nouveau_mot_de_passe") where user = "root" and host="localhost";</code>
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</code>
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>[[Software-index|@ Retour à la rubrique Réseau et sécurité]]</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}}

Version du 21 mai 2012 à 23:48


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 :



@ Retour à la rubrique Administration système

@ Retour à la rubrique Développement

Copyright

© 2010 Jiel Beaumadier

Tête de GNU 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.