1 votes

Réinitialiser puis restaurer le mot de passe mysql

J'ai le mot de passe root Linux. Il y a un serveur MySQL sur cette machine. L'un des fichiers ini du site a été réécrit et maintenant il ne peut pas accéder à la base de données MySQL. Je n'ai pas le mot de passe root MySQL pour changer le mot de passe de l'utilisateur de la base de données. Le propriétaire du serveur est actuellement en vacances, donc je ne peux pas lui demander de me donner le mot de passe root MySQL. Je peux réinitialiser le mot de passe root MySQL, mais je ne veux pas.

J'ai besoin :

  1. Enregistrer quelque part le hash du mot de passe root MySQL actuel
  2. Réinitialiser le mot de passe
  3. Faire les choses en tant que root MySQL (réinitialiser le mot de passe de l'utilisateur de la base de données)
  4. Restaurer l'ancien mot de passe root

Comment faire les points 1 et 4 ?

3voto

jammus Points 1796

La procédure de réinitialisation du mot de passe courante est effectuée en créant un fichier init qui réinitialise le mot de passe root. Ensuite, redémarrez le serveur avec une option le forçant à exécuter ce script avec les privilèges root en tant qu'utilisateur root.

L'exemple de script vous montre comment réinitialiser le mot de passe root, mais il n'y a aucune raison pour laquelle vous ne pourriez pas simplement avoir le script réinitialiser le mot de passe de l'utilisateur que vous souhaitez réinitialiser.

Ainsi, si vous avez la possibilité de redémarrer le serveur mysql et de spécifier un fichier init, vous pouvez sauter les étapes 1, 2 et 4 et simplement exécuter un script en tant que root. Il n'y a vraiment aucune raison pour que vous ayez besoin de toucher le compte root du tout.

2voto

Adam Points 11

AVERTISSEMENT : Nécessite un redémarrage de MySQL pour les étapes 1-3

Cela peut être fait sans...

Une fois connecté à la machine Linux, afin de créer un root temporaire pour vous-même avec le mot de passe t3mpp@assw0rd, suivez les étapes suivantes

ÉTAPE 01) service mysql restart --skip-networking --skip-grant-tables

ÉTAPE 02) À l'invite Linux, tapez mysql et appuyez sur Entrée

ÉTAPE 03) Exécutez cette commande SQL

SELECT COUNT(1) RootLocalhostExists FROM mysql.user
WHERE user='root' AND host='localhost';
  • Si RootLocalhostExists est de 0, arrêtez ici. Laissez un commentaire dans ma réponse.
  • Si RootLocalhostExists est de 1, passez à l'ÉTAPE 04.

ÉTAPE 04) Exécutez ces commandes SQL

CREATE TABLE mysql.user2 LIKE mysql.user;
INSERT INTO mysql.user2 SELECT * FROM mysql.user
WHERE user='root' AND host='localhost';
UPDATE mysql.user SET PASSWORD=PASSWORD('t3mpp@assw0rd')
WHERE user='root' AND host='localhost';

ÉTAPE 05) service mysql restart

Cela exécutera vos étapes 1-3.

RÉCUPÉRATION DU MOT DE PASSE

Pour remettre le root mysql d'origine, faites ceci (Pas de redémarrage de MySQL nécessaire) :

ÉTAPE 01) À l'invite Linux, tapez mysql -uroot -pt3mpp@assw0rd et appuyez sur Entrée

ÉTAPE 02) Exécutez le SQL suivant

DELETE FROM mysql.user WHERE user='root' AND host='localhost';
INSERT INTO mysql.user SELECT * FROM mysql.user2;
DROP TABLE mysql.user2;
FLUSH PRIVILEGES;
EXIT

C'est tout.

Essayez-le !!!

0voto

cas Points 6563

Si votre serveur mysql tourne sous debian (ou ubuntu ou similaire), vous pouvez probablement utiliser l'utilisateur debian-sys-maint plutôt que l'utilisateur racine mysql. Regardez dans /etc/mysql/debian.cnf

Il a des privilèges SUPER et peut changer le mot de passe d'un utilisateur.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X