MySQL est un système de gestion de bases de données relationnelles (SGBDR) libre et gratuit. Il est performant et très populaire. Il est multi-threadé et multi-utilisateurs.
Installation
Installez le paquet mysql-server. Détail de l’installation
Utilisation
Savoir si MySQL est lancé
Pour savoir si le serveur MySQL est lancé, tapez la commande suivante dans un terminal :
sudo /etc/init.d/mysql statusSi MySQL est en fonctionnement, vous devriez obtenir une ligne semblable à :
status: startedDémarrage
Pour démarrer le serveur MySQL, tapez la commande suivante dans un terminal :
sudo /etc/init.d/mysql startRedémarrage
Pour redémarrer le serveur MySQL, tapez la commande suivante dans un terminal :
sudo /etc/init.d/mysql restartArrêt
Pour arrêter le serveur MySQL, tapez la commande suivante dans un terminal :
sudo /etc/init.d/mysql stopRechargement de la configuration
Pour que MySQL prenne en compte les modifications de sa configuration, tapez la commande suivante dans un terminal :
sudo /etc/init.d/mysql reloadForcer la prise en compte de la nouvelle configuration
Pour forcer MySQL Ã recharger ses fichiers de configuration, tapez la commande suivante dans un terminal :
sudo /etc/init.d/mysql force-reloadConfiguration
Lancer la console MySQL
Si vous n’avez pas défini de mot de passe (déconseillé) :
mysql -u rootSi vous avez défini un mot de passe :
mysql -u root -pet tapez votre mot de passe.
Vous arriverez alors sur un prompt du type :
mysql>Vous pouvez alors taper vos requêtes MySQL. N’oubliez pas le point-virgule à la fin de la requête. Si vous l’oubliez le prompt passe à la ligne.
mysql> select * from
->Ce passage vous indique que la requête n’est pas terminée. Vous pouvez entrer vos requêtes de cette façon sur plusieurs lignes et enfin la clôturer avec le « ; ».
Sélectionner la base de données à utiliser
Soit directement lorsque vous lancez le client mysql en ligne de commande :
mysql -u root -p votre_baseSoit une fois connecté à mysql en tapant :
mysql> use votre_base;Ajouter ou changer le mot de passe de root
Pour changer le mot de passe de l’utilisateur root (qui n’est pas le même que l’utilisateur root du système), tapez la commande suivante dans un terminal :
sudo mysqladmin -u root password nouveau_mot_de_passe -pRedéfinir de force le mot de passe de root
Si vous avez perdu votre mot de pass Root pour MySQL, suivez ces quelques étapes :
On stoppe le serveur MySQL :
sudo /etc/init.d/mysql stopOn se connecte au serveur sans tenir compte des privilèges utilisateurs :
sudo /usr/bin/mysqld_safe --skip-grant-tables &
mysql -h localhostNous allons utiliser la table contenant les paramètres de MySQL :
use mysqlOn met en place le nouveau mot de passe :
update user set password = password('<votre_mot_de_passe>') where user = 'root' and host='localhost';(remplacez
On quitte le prompt de MySQL :
quitOn redémarre le serveur MySQL en utilisation normale :
sudo /etc/init.d/mysql restartUne autre méthode beaucoup plus simple :
sudo /etc/init.d/mysql reset-passwordUne autre méthode simple qui fonctionne sur les Ubuntu récentes (7.10, 8.x) :
sudo dpkg-reconfigure mysql-server-5.0Utiliser un autre numéro de port
Pour activer la connexion à MySQL via le port 3306, commentez la ligne suivante dans le fichier /etc/mysql/my.cnf (en ajoutant # au début de la ligne) :
skip-networkingConnexions entrantes
Par défaut, MySQL n’écoute que les connexions venant de localhost (127.0.0.1), c’est-à -dire du système sur lequel il est installé.
Pour pouvoir accéder à MySQL depuis un autre ordinateur, ajoutez la ligne suivante au fichier /etc/mysql/my.cnf dans la section « [mysqld] » :
bind-address = x.x.x.xoù x.x.x.x est l’adresse ip de l’interface sur laquelle MySQL doit écouter. Cela permet de n’écouter que sur une ip privée si vous avez plusieurs interfaces réseaux.
Vous pouvez mettre 0.0.0.0 si MySQL doit écouter les connexions venant de toutes les interfaces réseaux, et donc être totalement accessible. Cela peut être dangereux si votre serveur est connecté à Internet directement.
Configuration en UTF-8
Il suffit d’ajouter les deux lignes suivantes à la fin de la section « [mysqld] » du fichier /etc/mysql/my.cnf :
character-set-server=utf8
skip-character-set-client-handshakepuis de relancer le serveur mysql :
sudo /etc/init.d/mysql restartVous pouvez vérifier le résultat une fois loggé dans mysql grâce à la commande suivante :
SHOW VARIABLES LIKE 'char%';Résultat :
mysqld> SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysqld/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)Quelques requêtes SQL
Toute ces commandes sont a entrer dans le prompt de mysql une fois connecté au serveur
Base de donnée
Créer une base de données
CREATE DATABASE nom_de_la_base;Liste des bases de données
SHOW DATABASES;Tables
Liste des tables de la base de données active
SHOW TABLES;Structure d’une table
DESCRIBE nom_table;Renommer une table
ALTER TABLE nom_table RENAME AS nouveau_nom;Pour la syntaxe des requêtes SQL, reportez-vous à la documentation MySQL.
Utilisateurs
Créer un utilisateur
CREATE user "nom_utilisateur"@"localhost";Définir un mot de passe
SET password FOR "nom_utilisateur"@"localhost" = password("mot_de_passe");Supprimer un utilisateur
DROP user nom_utilisateur@localhost;Privilèges
Donner tous les droits sur une base de données à un utilisateur précis
GRANT ALL ON nom_base.* TO nom_utilisateur@localhost;Supprimer les droits sur une base de données à un utilisateur précis
REVOKE ALL privileges ON nom_base.* FROM nom_utilisateur@localhost;Autres opérations
Sauvegarde et importation
Pour exporter la base de donnée « maBase », utilisez la commande :
mysqldump -u root -p maBase > maBase_backup.sqlCeci fera l’export dans un fichier « maBase_backup.sql ».
Pour importer une base de données ou une sauvegarde sur « maBase », utilisez la commande :
mysql -u root -p maBase < maBase_backup.sqlPuis tapez votre mot de passe.
Si vous souhaitez mettre en place une solution de sauvegarde automatique de bases de données à intervalle régulier, rendez-vous sur le tutoriel traitant de la sauvegarde automatique de bases de données via cron.
Si on n’a pas accès à mysql-client (par exemple si on a récupéré un disque dur dont le système est mort), on peut sauvegarder le répertoire « /var/lib/mysql/ » dans lequel chacune des bases est enregistrée dans un répertoire portant son nom.
D’autres commandes telles que la suppression des tables, de la base, l’ajout des données dans la base des données, etc. peuvent être trouvées sur le site de documentation de MySQL.
Compacter l’espace utilisé par ibdata1
Mysql stoque ses fichiers dans le dossier /var/lib/mysql. Il arrive avec le temps et l’utilisation que le fichier ibdata1 occupe un espace disque très important qui ne sera pas récupéré même en supprimant toutes les bases.
Pistes pour comprendre et corriger ce problème :
Supprimer les tables InnoDB pour récupérer l’espace "Bug" associé Exporter toutes les bases de données, arrêter mysql, supprimer le fichier, démarrer sql et importer toutes les bases.
Liens
Memento MySQL Aller plus loin avec MySQL


Commentaires