Mysql


Ré-initialiser le mot de passe root

Oui oui, ça n’arrive pas qu’aux autres de ne plus retrouver son mot de passe “root” sous MySQL. Saisi sur le coup lors de l’installation pour ne pas le laisser vide, impossible de s’en rappeler plusieurs mois après…
Bref, voici la manip’ pour remédier à mes trous de mémoire (Ubuntu Feisty et MySQL 5.x) :

On coupe le serveur par défaut :
# invoke-rc.d mysql stop


On relance manuellement le serveur en ignorant la table des droits des utilisateurs :
# mysqld --skip-grant-tables


Dans un nouveau terminal/console, on peut se connecter sans mot de passe à la base mysql :
$ mysql -u root mysql


On remplace l’ancien mot de passe par le nouveau, puis on recharge les droits et on ferme la connexion (le tout sur une même ligne ou les 3 commandes successives) :
UPDATE user SET password=password('VOTRE_MOT_DE_PASSE_ICI') WHERE user='root';
flush PRIVILEGES;
exit;


On peut fermer le terminal/console et revenir sur la première pour arrêter notre serveur lancé manuellement. Relancer MySQL avec la commande :
# invoke-rc.d mysql start


La connexion doit maintenant se faire sans soucis avec le compte root :
$ mysql -u root -p


Charset


UTF8 - LATIN1

Suite au transfert d’un de mes domaines vers un nouvel hébergeur, j’ai récupéré la base de données MySQL existante via phpMyAdmin pour la réinjecter sur le nouveau serveur. Or à l’arrivée, je me retrouve avec tous mes caractères spéciaux (accents, cédilles, etc) qui ne sont plus pris en compte:
Calendrier prévisionnel pour 2006 à télécharger
En fait, la base mysql originale était sur un serveur dont le charset était défini en UTF8 alors que le nouveau serveur fonctionne avec le charset latin1. Pour importer la base proprement, il a donc suffit de spécifier à mysql le charset par défaut avec “default-character-set” :
mysql ma_base < mon_fichier.sql --default-character-set=utf8 -u mon_utilisateur -p



LATIN1 - UTF8

Inversement, pour exporter correctement du LATIN1 vers du UTF-8, définir l'encodage comme "latin1" et avec l'option "-r" le fichier d'export:
mysqldump -u mon_utilisateur -p --default-character-set=latin1 ma_base -r /chemin/vers/dump_ma_base.sql

Editer le fichier de dump afin de supprimer la ligne d'en-tête qui force le latin1:
/*!40101 SET NAMES latin1 */; <-- supprimer

Enfin, se connecter en UTF-8 et importer le dump dans la nouvelle base:
mysql -u mon_utilisateur -p --default-character-set=utf8

mysql> CREATE DATABASE ma_base;
mysql> USE ma_base;
mysql> SET NAMES 'utf8';
mysql> SOURCE /chemin/vers/dump_ma_base.sql;




CategoryLinux, CategorySecurite
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki