Installation et configuration de MySQL

De Linux Server Wiki
Révision datée du 4 février 2011 à 02:27 par Pfoo (discussion | contributions) (Page créée avec « Ce howto a été écrit au départ pour debian etch puis a été adapté pour debian lenny. Il reste cependant valable la plupart du temps pour ces deux versions de debian. ... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Ce howto a été écrit au départ pour debian etch puis a été adapté pour debian lenny. Il reste cependant valable la plupart du temps pour ces deux versions de debian.

1 Installation et configuration

Pour installer mysql, tapez :

aptitude install mysql-server mysql-client

Nous allons modifier la configuration de mysql afin de stocker les bases de données à un endroit plus propre. Pour cela, éditez le fichier /etc/mysql/my.cnf, recherchez la ligne datadir et remplacez la par :

datadir /srv/mysql

Copiez l'ancien répertoire de la base de donnée au nouvel emplacement et attribuez lui les bons privilèges :

cp -R /var/lib/mysql/ /srv/
chown -R  mysql /srv/mysql
chgrp -R  mysql /srv/mysql

Essayez de lancer mysql :

/etc/init.d/mysql start

Si mysql refuse de démarrer, c'est probablement un problème de permission. Le dossier mysql et tous les sous dossiers présent dans /srv/mysql doivent appartenir à mysql:mysql et avoir les permissions rwxr-x---

chmod 750 /srv/mysql/

Essayez de relancer mysql.

/etc/init.d/mysql start

Vous voudrez peut-être empêcher l'accès à MySQL par le réseau. Ajoutez la ligne suivante dans le fichier /etc/mysql/my.cnf :

bind-address            = 127.0.0.1

Cette directive remplace l'ancienne directive skip-networking de mysql.

2 Le mot de passe root de MySQL

Par défaut, il n'y a pas de mot-de-passe root de défini. Vous pouvez donc vous loguer sans problème sous mysql en root:

mysql -u root -p

Faites simplement enter lorsque le mot de passe vous sera demandé. Une fois au prompt mysql>, vous pouvez définir le mot-de-passe root en tapant :

UPDATE mysql.user SET Password = PASSWORD('motdepasse') WHERE User = 'root';
FLUSH PRIVILEGES;

3 Récupérer le mot-de-passe root perdu

Arrêtez votre serveur mysql :

/etc/init.d/mysql stop

Démarrez mysql de cette manière :

mysqld --skip-grant-tables --skip-networking & 

Cela permet de démarrer le serveur mysql sans qu'il prenne en compte les droits (pour modifier le mot de passe) et sans qu'il n'écoute sur le réseau (histoire d'être certain que personne ne s'y connecte en root pendant que vous changez le mot de passe).

Loguez vous sous mysql :

mysql

Et tapez la requête sql suivante pour changer votre mot de passe root :

UPDATE mysql.user SET Password = PASSWORD('motdepasse') WHERE User = 'root';
FLUSH PRIVILEGES;

Délogez vous de la console mysql en tapant quit;. Vous pouvez maintenant relancer mysql normalement :

/etc/init.d/mysql restart

4 Sauvegarder et restaurer une base de donnée MySQL

4.1 Sauvegarde

Pour sauvegarder une base entière :

mysqldump -u root -p --opt nom_de_la_base > sauvegarde.sql

Pour sauvegarder uniquement une table d'une base :

mysqldump -u root -p --opt nom__de_la_base nom__de_la_table > sauvegarde.sql

4.2 Restauration

Pour restaurer une table d'une base ou une base complète :

mysql -u root -p ma_base < sauvegarde.sql

5 Gérer facilement ses bases de données avec PhpMyAdmin

Phpmyadmin permet de gérer ses bases de données MySQL très facilement grâce à une interface web. Commençons par installer phpmyadmin :

aptitude install phpmyadmin

Par défaut, phpmyadmin s'installe dans /usr/share/phpmyadmin/ Bien-sur, vous voudrez probablement que phpmyadmin soit accessible grâce à l'un de vos site internet. Il suffit d'ajouter la ligne suivante dans le fichier de configuration de la vhost apache correspondante :

Include /etc/phpmyadmin/apache.conf

Si vous avez sécurisé votre installation php avec open_basedir il faut préciser les arguments suivants pour php_admin_value open_basedir dans la configuration de la vhost (/etc/apache2/sites/admin.csnu.org.conf dans mon cas) :

php_admin_value open_basedir /srv/http/csnu.org/admin.csnu.org/:/usr/share/:/etc/phpmyadmin/:/var/lib/phpmyadmin/

Désormais, vous pouvez accéder à phpmyadmin par l'url correspondant au site pour lequel vous avez créé le lien. Dans mon cas :

http://admin.csnu.org/phpmyadmin/

6 Optimiser les réglages de MySQL

Téléchargez tuning-primer.sh puis tapez :

sh tuning-primer.sh

Le programme analysera votre configuration MySQL en fonction des logs et vous donnera quelques conseils au sujet de votre configuration.