Administration de MySQL

De UnixManiax
Aller à : navigation, rechercher


Introduction

N'étant pas Administrateur de Bases de Données (DBA), cet article ne décrira pas en détail le fonctionnement de MySQL. Il s'adresse plutôt aux administrateurs systèmes, en expliquant comment arrêter et démarrer une base, comment récupérer des informations sur une base, et surtout comment sauvegarder/restaurer une base. Plus quelques infos d'ordre général sur le fonctionnement de mysql.


Installer MySQL

MySQL est disponible dans les dépôts de toutes les distributions ou presque. Il est donc très facile de l'installer avec la méthode habituelle de votre distribution. Il faut installer le paquet mysql-client pour se connecter à une base existante, et le paquet mysql-server pour installer une base. Je ne rentrerai pas plus dans les détails.


Choisir le moteur de MySQL

Il existe deux moteurs différents que peut utiliser MySQL : MyISAM et InnoDB. On peut choisir un moteur différent pour chaque base.

Ces deux moteurs ne fonctionnent pas pareil et n'ont pas les mêmes fonctionnalités. A mon sens, ces différences concernent plus les DBA que les administrateurs système. Cependant, il est utile de savoir quel est le moteur utilisé pour les sauvegardes, car certains outils ne fonctionnent qu'avec certains moteurs (par exemple, mysqlhotcopy ne marche qu'avec MyISAM). Je n'aborderai ici que ceux qui fonctionnent avec les deux moteurs.

MyISAM est le moteur par défaut de MySQL. Il fonctionne à l'aide de fichiers, placés dans /var/lib/mysql/. Pour chaque base, il créé un fichier .MYD (qui contient les données), un fichier .MYI (qui contient les indexes) et un fichier .frm (qui contient des métadonnées).

InnoDB utilise de principe de TableSpace, utilisé par d'autres bases de données, comme Oracle. Dans ce cas, MySQL dispose d'un espace dédié sur le disque qu'il organise à sa façon. Le TableSpace est représenté par défaut par le fichier /var/lib/mysql/ibdata1. Il créé également un fichier .frm et des fichiers ib_logfile0 et ib_logfile1, tous dans /var/lib/mysql/.

Pour savoir quel moteur utilise votre table, il faut se connecter dessus (en tapant mysql en ligne de commande) et taper :

show table status from ma_table;

Il faut ensuite taper "quit" pour sortir du prompt mysql.


Démarrer/arrêter MySQL

Sur la quasiment toutes les distributions linux, l'installation de mysql créé le daemon /etc/init.d/mysqld. Par conséquent, l'arrêt/relance de mysql se fait comme n'importe quel daemon avec "/etc/init.d/mysqld stop|start|restart|status".


Afficher les bases et les tables

Voici quelques commandes pour voir les bases et leur contenu (à taper dans un shell) :

  • mysqlshow : affiche la liste des bases
  • mysqlshow ma_base : affiche les tables de la base "ma_base"
  • mysqlshow ma_base ma_table % : affiche de façon détaillée les champs de la table "ma_table" appartenant à la base "ma_base"


A toutes ces commandes, on peut rajouter les options -u et -p. -u sert à préciser l'utilisateur et -p le mot de passe. On doit coller le nom et le mot de passe derrière les options respectives (par exemple -"uroot -ppassword"), le mot de passe devant être écrit en clair. On peut également laisser -p tout seul, le mot de passe sera alors demandé et ne sera pas visible.

MySQL possède un prompt dans lequel on peut travailler. On peut obtenir les mêmes informations sur les bases et les tables qu'avec mysqlshow, avec des "vraies" commandes mysql.

Les commandes à taper sont les suivantes :

  • mysql : on entre dans le prompt mysql (le prompt avant le curseur devient "mysql> ")
  • show databases; : affiche la liste des bases
  • use ma_base; : on se place dans la base "ma_base". Les prochaines commandes seront donc appliquées à "ma_base".
  • show tables; : affiche les tables de la base en cours
  • show columns from ma_table; : affiche les colonnes de la table "ma_table"
  • quit; : on sort du prompt mysql


PhpMyAdmin

Si vous avez juste une petite base perso, pour votre site web par exemple, et que vous voulez faire une sauvegarde sans taper toutes ces commandes barbares, il existe l'excellent PhpMyAdmin. C'est une application web écrite en PHP qui vous permet non seulement de sauvegarder vos bases (vers un fichier, comme mysqldump), mais également de créer, modifier, supprimer des bases et des tables, gérer les comptes utilisateurs mysql, etc. Bref, vous pouvez tout faire très simplement depuis cette interface. Il vous suffit d'installer le paquet phpmyadmin de votre distribution et ses dépendances.

Le site officiel de PhpMyAdmin se trouve ici : http://www.phpmyadmin.net.

Voici également un tutoriel sur l'excellent siteduzero : http://www.siteduzero.com/tutoriel-3-14496-phpmyadmin.html.