Silverlake - Le blog de ADIMCOR

Aller au contenu | Aller au menu | Aller à la recherche

jeudi, janvier 24 2013

Perte du mot de passe du root mysql

Je ne fais pas souvent de billet sur MySQL, il est vrai que le SGBD est assez simple d'utilisation toutefois il semble qu'il y ai une pénurie de spécialistes sur le sujet. Ici je vais décrire comment ré-initialiser le mot de passe du root en cas de perte de celui-ci.

Le billet se base sur une Debian, mais adaptable sans problème sur toute distribution.

Dans un premier temps, stopper MySQL

/etc/init.d/mysql stop

Redémarrer le démon MySQL en tache de fond et passer outre l'identification. Pour des raisons de sécurité désactiver aussi l'écoute du réseau :

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

Se connecter en root sur MySQL, il n'y a plus de mot de passe, il suffit donc de faire Entrée au prompt demandant le mot de passe.

mysql -u root -p

Au prompt MySQL réinitialiser le mot de passe, j'utilise ici motdepasse via la fonction password qui le crypte.

mysql> use mysql;
mysql> update user set password=password('motdepasse') where user="root";
mysql> flush privileges;
mysql> exit;

Très important ne pas oublier flush privileges, sinon ça ne marche pas !

Redémarrer MySQL normalement.

/etc/init.d/mysql restart

Rien de plus à faire.

samedi, novembre 6 2010

Astuces MySQL

L'installation par défaut sous debian de MySQL peut ne pas convenir. Voici deux petites corrections bien utiles.

Augmentez la mémoire dédiée à MySQL

Les valeurs par défaut du serveur sont donc un peu justes. Editer le fichier /etc/mysql/my.cnf et rajouter la ligne suivante dans la section mysqld

set-variable=innodb_buffer_pool_size=128M

La valeur peut aller jusqu'a 75% de la RAM du serveur si celui-ci est dédié à MySQL. Relancer mysql après la modification de ce paramètre.

Emplacement des données

Les fichiers de données MySQL sont situés sous /var/lib/mysql. Cet emplacement n'est pas toujours judicieux. A titre personnel je déplace toujours ces données sous /home/mysql, car je partitionne toujours mon disque avec /var à 2Go.

Arrêter mysql

/etc/init.d/mysql stop

Déplacer le répertoire /var/lib/mysql sous /home

mv /var/lib/mysql /home

Editer le fichier /etc/mysql/my.cnf et modifier la ligne datadir

datadir= /home/mysql

Redemarrer MySQL

/etc/init.d/mysql start

Spécificité Ubuntu

Sous Ubuntu, en cas de déplacement du répertoire par défaut de MySQL, il faut, en plus, editer le fichier de configuration apparmor. Sinon il y aura un echec lors du redémarrage.

sudo vi /etc/apparmor.d/usr.sbin.mysqld

Repérer les deux lignes commençant par /var/lib/mysql, commenter les et corriger les avec le nouvel emplacement.

#/var/lib/mysql/ r,
/home/mysql/ r,
#/var/lib/mysql/** rwk,
/home/mysql/** rwk,

Sauvegarder et relancer apparmor puis mysql

/etc/init.d/apparmor restart
/etc/init.d/mysql restart

vendredi, novembre 5 2010

Plateforme LAMP

Introduction

LAMP : Linux, Apache, MySQL et Php. Il s'agit d'un quatuor que l'on retrouve dans de nombreuses applications accéssibles via Internet :

  • CMS, type Joomla, Blog Wordpress Dotclear...
  • E-Commerce, OS-Commerce, Prestashop...
  • CRM : SugarCRM...

Sous Debian, l'installation est simple :

aptitude install apache2 php5 mysql-server php5-mysql

Le système demandra un mot de passe pour l'utilisateur root de MySQL ( rien à voir avec le root Linux ).

Librairie graphique

Pour afficher correctement les images, certains produits ont besoin de la librairie GD. là encore l'installation est simple :

aptitude install php5-gd

Redémarrer apache pour activer ce module.

/etc/init.d/apache2 restart

Base MySQL

Il est utile pour chaque application de créer une base et un utilisateur dédié. L'exemple suivant concerne l'application de E-Commerce Prestashop. L'installation demande un nom de serveur et une base de données. Le mieux est de la créer ainsi :

mysql -u root -p
( entrez le mot de passe root de MySQL saisi précédement )
SQL> create database prestashop;
SQL> grant all privileges on prestashop.* to prestashop@localhost indentified by 'motdepasse';
SQL> flush privileges;
SQL> exit

Lors de l'installation Prestashop, mettre localhost dans le nom du serveur. Puis prestashop pour la base de données et utiliser le user prestashop et motdepasse pour se connecter.

L'exemple est facilement adaptable à tout produit utilisant une plateforme LAMP avec installation via le navigateur.

vendredi, juillet 30 2010

Sauvegarde/Restauration MySQL, Utilitaire mysqldump

Principe

Utilisation basique de mysqldump pour la sauvegarde de la base de données schema.

mysqldump -u root -pmotdepasse schema > schema.dmp

Restauration

mysql -u root -plemotdepasse
SQL> create database schema;
SQL> exit;
mysql -u root -plemotdepasse schema < schema.dmp

Sauvegarde de tous les schémas de la base

Le script suivant permet la sauvegarde via mysqldump de chaque shéma de la base dans un fichier séparé.

#!/bin/sh
for x in `mysql -u root -pmotdepasse -Bse "show databases"`
do
  mysqldump -u root -pmotdepasse $x | 
  gzip -9 > /home/svgmysql/$x.`date +%Y%m%d`.gz
done

Ce script inclut la compression du fichier et une règle de nommage en fonction de la date système. Pour la phase de restauration il faut au préalable décompresser le fichier. La procédure est identique à celle présentée plus haut.