Mot de passe root de MySQL perdu

À tout ceux qui ont oublié le mot de passe du super-user requis pour administrer MySQL (et qui ont également un accès root à la machine qui héberge le serveur de base de données), voici un tutoriel qui va permettre de réinitialiser ce mot de passe sans tout péter :

  1. La première étape indispensable est d’arrêter MySQL, d’où le besoin d’avoir des privilèges élevés sur la machine hôte.
  2. Bloquez tous les accès externes à MySQL via iptables  si vous être trop lent au clavier 🙂
  3. Lancez MySQL avec le paramètre –skip-grant-tables , cela a pour effet de désactiver toute politique d’accès, en d’autre terme c’est tournée gratuite pour tout le monde, d’où le blocage de l’étape 2.
  4. Tapez mysql -u root , et hop vous avez la main sans avoir eu à taper de mot de passe
  5. Dans ce mode de fonctionnement, les commandes de gestion des accès ne fonctionnent pas : il n’est donc pas envisageable d’utiliser l’une de ces commandes : GRANT  ou REVOKE . En revanche on peut désormais taper sur la table mysql (la table système) avec les commandes de base : SELECT et UPDATE. Pour réinitialiser les mots de passe root, vous pouvez utiliser cette requête SQL en remplaçant le mot de passe :
    UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
    FLUSH PRIVILEGES;
  6. Étape finale. En théorie, l’instruction FLUSH PRIVILEGES  recharge les accès, et il n’est donc plus possible de se connecter au serveur MySQL sans s’identifier. Pour ma part, j’ai redémarré le serveur MySQL en mode « normal », je ne perds rien si ce n’est 10 petites secondes.

MySQL propose une solution alternative plus rapide, en permettant d’exécuter un fichier SQL au démarrage du serveur avec bien évidemment les privilèges root. La technique est donc identique sauf qu’au lieu de taper la requête SQL en console, on la prépare dans un fichier, qui est ensuite lancé avec le switch –init-file=fichier_reinitialisation.sql. Il n’est plus nécessaire alors d’utiliser le paramètre –skip-grant-table, mais gare à ne pas se tromper dans la requête.

Voir aussi

Associer un utilisateur de base de données à une connexion SQL Server

Lorsqu’on fait des imports d’un serveur SQL Server à l’autre et que l’on utilise l’authentification en mode SQL, il peut arriver que des connexions SQL soient refusées. En réalité, le lien entre une connexion SQL Server et un utilisateur de base de données n’existe plus.

La méthode barbare auquel on pourrait penser au premier abord pour remédier à ce problème est alors de supprimer l’utilisateur de la base de données pour le recréer, mais si cet utilisateur a des droits particuliers, tous ces droits sautent et il faut les réattribuer.

Microsoft fournit une fonctionnalité permettant de modifier les mappages entre utilisateurs de base de données et connexions SQL Server, très utile dans ce cas précis.

Exemple d’utilisation : exec sp_change_users_login ‘Update_one’, ‘username’, ‘loginname’
username  est un utilisateur de base de données et loginname  une connexion SQL Server.

Cette méthode semble dépréciée par Microsoft, mais est toujours utile pour une utilisation exceptionnelle.

Voir aussi

Mettre à jour le Milestone en version 2.0.1 avec le root

Avertissement : cette bidouille a le pouvoir de transformer votre téléphone en brique technologique complètement inerte sans moyen de récupération. Ce tutoriel n’est pas destiné aux apprentis sorciers et je ne pourrais pas être tenu pour responsable des conneries qui pourraient arriver à votre téléphone.

La technique décrite ci-après est dédiée au Motorola Milestone (la déclinaison européenne du Droid), en version 2.0 (la version d’origine). Elle fonctionne, je l’ai testé sur mon propre Milestone.

Remarque: officielle ou pas, la mise à jour 2.0.1 est une mise à jour différentielle, c’est à dire que tous les fichiers systèmes doivent être d’origine. Si vous avez enlevé des apk systèmes par exemple, il faudra les remettre avant d’effectuer la mise à jour, sinon celle-ci échouera lamentablement.

Instructions

  1. Primo, on récupère la mise à jour trafiquée, permettant l’ajout et l’accès au programme su. Ce fichier met à jour le Milestone de la version 2.0 à la version 2.0.1 et ajoute l’accès au root. Il n’est donc pas nécessaire de rooter le téléphone avant d’appliquer cette mise à jour. Télécharger update-2.0.1-no-recovery
  2. Placez cette mise à jour à la racine de la sdcard sous le nom update.zip
  3. Deuxio, passez en mode recovery. Deux techniques pour cela :
    1. Si vous avez un pc avec l’adb pas loin, branchez le téléphone et taper la commande adb reboot recovery . Le redémarrage est instantané et simple. Vous voilà en recovery.
    2. Sinon éteignez le portable complètement puis pressez la combinaison de touche suivante : pressez le bouton doré puis sans relâcher, le bouton on/off. Dès que l’écran s’allume, vous pouvez relâcher les boutons. Vous voilà en recovery.
  4. Affichez le menu du recovery en pressant la touche ‘volume up’ puis sans relâcher le bouton dorée. Un menu s’affiche, vous pouvez relâcher la combinaison de touches.
  5. Sélectionnez ensuite l’entrée ‘apply sdcard:update.zip’ avec les touches directionnelles puis validez.

Quelques informations sur cette mise à jour.

Le zip donné ici est basé sur la mise à jour officielle pour la version Européenne, il ne s’agit donc pas d’un hybride venu d’Hong-Kong, mais bien de la mise à jour qui vous est proposée par le téléphone lui-même.
Le script d’installation de cette mise à jour a été modifié sur le même principe utilisé pour avoir le root avec le Milestone 2.0.
Ce nouveau script d’installation effectue la même chose que le script initial, mais ne flash pas le recovery pour conserver la faille des mises à jour non signées, et push su avec les bons droits pour avoir l’accès root.

Je remercie caohung et poseidon pour les modifications apportées à la mise à jour officielle.

Enjoy

SHA-1 du fichier update-2.0.1-no-recovery.zip : 62E13F64F44AE56C53EE7BDE249717E7402365B4

Rooter le Motorola Milestone

Avertissement : cette bidouille a le pouvoir de transformer votre téléphone en brique technologique complètement inerte sans moyen de récupération. Ce tutoriel n’est pas destiné aux apprentis sorciers et je ne pourrais pas être tenu pour responsable des conneries qui pourraient arriver à votre téléphone.

La technique décrite ci-après est dédiée uniquement au Motorola Milestone (la déclinaison européenne du Droid), en version 2.0 (la version d’origine). Elle fonctionne, je l’ai testé sur mon propre smartphone.

Instructions

  1. Primo, on récupère la mise à jour trafiquée, permettant l’ajout et l’accès au programme su. Ce fichier ne met rien à jour, il ne fait qu’ajouter l’accès au root. Télécharger update-root.
  2. Placez cette mise à jour à la racine de la sdcard sous le nom update.zip
  3. Deuxio, passez en mode recovery. Deux techniques pour cela :
    1. Si vous avez un pc avec l’adb pas loin, branchez le téléphone et taper la commande adb reboot recovery . Le redémarrage est instantané et simple. Vous voilà en recovery.
    2. Sinon éteignez le portable complètement puis pressez la combinaison de touche suivante : pressez le bouton doré puis sans relâcher, le bouton on/off. Dès que l’écran s’allume, vous pouvez relâcher les boutons. Vous voilà en recovery.
  4. Affichez le menu du recovery en pressant la touche ‘volume up’ puis sans relâcher le bouton dorée. Un menu s’affiche, vous pouvez relâcher la combinaison de touches.
  5. Sélectionnez ensuite l’entrée ‘apply sdcard:update.zip’ avec les touches directionnelles puis validez.

Quelques informations sur cette mise à jour.

Le recovery du Milestone 2.0 présente une faille permettant de lui faire accepter des mises à jour mal-formées. Pour faire court, en accolant un zip officiel et signé à un zip contenant le nécessaire pour le root, on obtient un autre zip valide (accepté par le recovery) qui est la fusion des deux zips précédent. Ce zip final contient un script d’installation permettant l’ajout de su avec les bons droits et SuperUser.apk.

Pourquoi rooter son téléphone ?

Si vous ne connaissez pas la réponse à cette question, il est plus prudent de ne pas faire cette manipulation.%%%
Sinon les réponses sont assez diverses pour ma part :

  • flinguer les mises à jour OTA
  • naviguer dans le système de fichiers Android sans aucune restrictions
  • récupérer les *.apk (les applications du market) pour en faire une sauvegarde, y compris les apk chiffrés
  • tuner en profondeur le matériel comme l’utilisation cpu avec SetCPU (undercloacker lorsque le téléphone n’est pas utilisé par exemple)
  • ne pas attendre le bon vouloir de Motorola et faire de mon téléphone ce que je veux

Un grand merci à SeraphimSerapis, Andrea et Zinx Verituse pour avoir trouvé cette faille et avoir su l’exploiter.

Voir aussi

SHA-1 du fichier update-root.zip : 07DA7B71420D013D12885BD148BF3E9661034CC0

Enjoy

Conserver la position du défilement de la page

Depuis ASP.NET 2, il existe une directive bien sympathique qui permet de repositionner la barre de défilement d’une page après un postback.
Il suffit simplement de positionner la directive MaintainScrollPositionOnPostBack  à true  dans la balise de la page :

<%@ Page ... MaintainScrollPositionOnPostBack="true" %>

C’est quand même mieux que de se farcir un script javascript, non ?

Voir aussi

Pas d’hibernation car trop de RAM

L’hibernation n’est pas quelque chose que j’utilise souvent, c’est lent (dû au temps de copie de toute la RAM sur disque dur) et la consommation en veille simple est suffisamment faible pour que mon portable puisse tenir quelques heures avec 2% avant que je ne perde tout.

Bref, suite à des instabilités avec la veille simple lors du rallumage, je me suis remis à tester la mise en veille prolongée. Et là, c’est le drame : pas d’hibernation dans les options d’extinction.

Aucune bidouille ne pourra m’aider, l’hibernation n’est tout simplement pas compatible avec le scénario suivant :

  • Un Windows en version 64 bits (peut-être les version 32 bits également, mais je ne le certifie pas)
  • 4Go de mémoire vive ou plus
  • utilisation de DEP, qui implique l’activation de PAE

DEP (en matériel) est très intéressant pour flinguer certaines applications programmées de façon non conforme (codé avec les pieds quoi), et joue également un rôle dans la virtualisation. Cependant DEP ne fonctionne qu’avec PAE, et c’est ce dernier qui rend l’hibernation impossible.

Toutes les explications sur le site de Microsoft : Boot Parameters to Configure DEP and PAE.

Linuxifier la ligne de commande Windows

Envie que la boite noire Windows ait un gout de Linux (id est soit pus pratique à l’usage) ?

Il y a deux paramètres sur lequel on peut jouer pour cela (outre la couleur qui est bien choisie par défaut):

  • Le copier/coller par clique droit. Il est désactiver par défaut, mais en allant dans les propriétés de la ligne de commande (Alt+Espace, puis Properties) puis en cochant les deux cases du bloc « Options d’édition », cette fonctionnalité est réactiver.
  • Le prompt, ou ce qui est affiché sur la même ligne avant le curseur clignotant peut lui aussi être personnalisé. Ce paramètre se trouve dans la variable PROMPT. Par défaut PROMPT=$P$G , mais PROMPT= »%username% $P$$ »  vous rappellera le style UNIX.

Voir aussi

Détecter proprement l’UTF-8

Je me suis toujours demandé s’il était possible (et si c’est le cas, comment) de détecter un texte UTF-8 (sans le BOM, ça serait trop facile sinon) d’un autre texte ISO-8859.

Mon ami W3C m’a répondu et m’a donné le script perl ci-dessous :

$field =~
  m/\A(
     [\x09\x0A\x0D\x20-\x7E]            # ASCII
   | [\xC2-\xDF][\x80-\xBF]             # non-overlong 2-byte
   |  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs
   | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
   |  \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates
   |  \xF0[\x90-\xBF][\x80-\xBF]{2}     # planes 1-3
   | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
   |  \xF4[\x80-\x8F][\x80-\xBF]{2}     # plane 16
  )*\z/x;

Si l’expression régulière du dessus trouve une occurrence dans le texte à tester, alors bingo c’est de l’utf !

Protéger les e-mails de son site

Dans la même veine que OpenDNS, je vous présente cette fois SpamPoison.

Il s’agit d’une simple image-lien à mettre sur ce site. Le but recherché est d’y piéger les robots scanners dans ces pages. En effet si vous cliquez sur un de ces liens (un exemple est disponible sur le site web), vous allez tomber sur une page remplit d’adresses e-mail bien sûr complètement bidons. Cela ne va pas empêcher le robot de continuer son scan, mais du coup les e-mails véritables se trouvant sur vos sites sont noyés avec les faux e-mails générés par SpamPoison.

Ce n’est absolument pas infaillible, mais ça aide pas mal.