MySQL: changer le mot de passe root perdu

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) :

    1. 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

PS: utiliser le fabuleux Keepass

Tags:  linux, mysql, sécurité

Articles relatifs

Zend Framework et PDO-MySQL

Une petite note rapide sur les étapes d’installation de PDO_MySQL qu’utilise le framework de Zend sur un environnement Ubuntu Edgy - Apache2 - PHP5 (Je considère que PHP5 et Apache2 sont installés):

    1. installer les outils minimums nécessaires à la compilation:

      $ sudo apt-get install build-essential
      installer les librairies PEAR (dont PECL), et les “headers” pour PHP et MySQL:

      $ sudo apt-get install php-pear php5-dev libmysqlclient15-dev
      Mettre à jour les paquets PECL existants:

      $ sudo pecl upgrade-all
      Installer directement PDO_Mysql (installera PDO par dépendance) avec la variable PHP_PDO_SHARED initialisée à “1″:

      $ export PHP_PDO_SHARED=1 && sudo pecl install pdo_mysql
      Faire charger PDO et PDO_MySQL par PHP ( /!\ vérifier le chemin du .ini):

      $ sudo echo "extension=pdo.so" >> /etc/php5/apache2/php.ini
      $ sudo echo "extension=pdo_mysql.so" >> /etc/php5/apache2/php.ini
      Idem pour installer l’extension PDO pour SQLite:

      $ export PHP_PDO_SHARED=1 && sudo pecl install pdo_sqlite
      $ sudo echo "extension=pdo_sqlite.so" >> /etc/php5/apache2/php.ini
      Enfin, redémarrer Apache pour appliquer les changements:

      $ sudo apache2ctl restart
      pour trouver d’autres extensions, utiliser:

      $ sudo pecl search pdo

That’s it !

Tags:  linux, mysql, pear, php, zend

Articles relatifs

Dump, charset et packets avec mySQL

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_login -p

Autre souci, En observant les logs j’ai remarqué plusieurs erreurs concernant des tailles de paquets qui dépassaient la limite autorisée lors de mon importation :

...
Query OK, 1 row affected (0.01 sec)
ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes
ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes
Query OK, 1 row affected (0.01 sec)
Query OK, 1 row affected (0.02 sec)
Query OK, 1 row affected (0.02 sec)
ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes
Query OK, 1 row affected (0.01 sec)
...

Cette erreur vient de la taille d’un de mes champs du type LONGBLOB que j’utilise pour y stocker directement des fichiers : les données stockées dépassent pour certaines la limite autorisée par défaut. Un simple changement dans le fichier /etc/my.cnf suffit :

[mysqld]
max_allowed_packet=32M

Et hop, tout s’est déroulé à merveille.

Tags:  charset, linux, mysql

Articles relatifs