web-dev-qa-db-fra.com

Restauration de l'utilisateur et du mot de passe 'root' supprimés pour MySQL

J'ai accidentellement supprimé l'utilisateur root sur ma configuration de développement local de MAMP/MySQL fonctionnant sous OS X. Aucun autre utilisateur n'a été créé pour revenir dans MySQL.

C'est un cauchemar doux qui ne semble rien faire sans root.

Trouvé ceci: http://hack2live.blogspot.com/2009/04/restore-repair-reset-mysql-root.html qui semble être exactement ce dont j'ai besoin.

Je ne pense pas non plus qu'une réinstallation de MAMP fera l'affaire, car beaucoup de mes recherches superficielles ont donné des gens qui avaient essayé sans succès.

Quelqu'un connaît-il un moyen convivial OSX pour recréer root @ localhost dans MySQL de MAMP? Je ne sais simplement pas où MySQL vit dans MAMP ou comment exécuter les commandes correctes dans le terminal pour essayer de le réparer.

Mise à jour

J'ai essayé plusieurs options ci-dessous pour restaurer la racine en vain et j'ai décidé de restaurer une sauvegarde de l'ensemble de l'application MAMP. J'ai donc récupéré root, je peux ouvrir phpmyadmin, etc.

33
PHPeer

J'ai un moyen rapide et sale

Obtenez quelqu'un avec des droits SysAdmin et procédez comme suit:

  1. Ajoutez 'skip-grant-tables' à my.cnf dans la section [mysqld]

  2. redémarrer mysql

  3. tapez mysql sans mot de passe et appuyez sur Entrée

  4. Lance ça:

    DELETE FROM mysql.user 
    WHERE  user = 'root' 
           AND Host = 'localhost'; 
    
    INSERT INTO mysql.user 
    SET user = 'root', 
        Host = 'localhost', 
        password = Password('whatevernewpassword'), 
        Select_priv = 'y',
        Insert_priv = 'y',
        Update_priv = 'y',
        Delete_priv = 'y',
        Create_priv = 'y',
        Drop_priv = 'y',
        Reload_priv = 'y',
        Shutdown_priv = 'y',
        Process_priv = 'y',
        File_priv = 'y',
        Grant_priv = 'y',
        References_priv = 'y',
        Index_priv = 'y',
        Alter_priv = 'y',
        Show_db_priv = 'y',
        Super_priv = 'y',
        Create_tmp_table_priv = 'y',
        Lock_tables_priv = 'y',
        Execute_priv = 'y',
        Repl_slave_priv = 'y',
        Repl_client_priv = 'y',
        Create_view_priv = 'y',
        Show_view_priv = 'y',
        Create_routine_priv = 'y',
        Alter_routine_priv = 'y',
        Create_user_priv = 'y',
        Event_priv = 'y',
        Trigger_priv = 'y',
        Create_tablespace_priv = 'y';
    
  5. quitter mysql

  6. supprimer "skip-grant-tables" de my.cnf sous la section [mysqld]

  7. redémarrer mysql

Ça devrait être tout!

62
RolandoMySQLDBA

La version traduite de http://hack2live.blogspot.com/2009/04/restore-repair-reset-mysql-root.html - pour OS X.

Ouvrez TextEdit.app et sélectionnez dans Format -> "Faire du texte brut".
Coupez et collez ce qui suit dans TextEdit et enregistrez-le dans votre dossier personnel [~ # ~] [~ # ~] avec le nom restore_root_privileges.sql

update mysql.user set Super_priv='y' where user='root';
update mysql.user set Select_priv='y' where user='root';
update mysql.user set Insert_priv='y' where user='root';
update mysql.user set Update_priv='y' where user='root';
update mysql.user set Delete_priv='y' where user='root';
update mysql.user set Create_priv='y' where user='root';
update mysql.user set Drop_priv='y' where user='root';
update mysql.user set Reload_priv='y' where user='root';
update mysql.user set Shutdown_priv='y' where user='root';
update mysql.user set Process_priv='y' where user='root';
update mysql.user set File_priv='y' where user='root';
update mysql.user set Grant_priv='y' where user='root';
update mysql.user set References_priv='y' where user='root';
update mysql.user set Index_priv='y' where user='root';
update mysql.user set Alter_priv='y' where user='root';
update mysql.user set Show_db_priv='y' where user='root';
update mysql.user set Super_priv='y' where user='root';
update mysql.user set Create_tmp_table_priv='y' where user='root';
update mysql.user set Lock_tables_priv='y' where user='root';
update mysql.user set Execute_priv='y' where user='root';
update mysql.user set Repl_slave_priv='y' where user='root';
update mysql.user set Repl_client_priv='y' where user='root';
update mysql.user set Create_view_priv='y' where user='root';
update mysql.user set Show_view_priv='y' where user='root';
update mysql.user set Create_routine_priv='y' where user='root';
update mysql.user set Alter_routine_priv='y' where user='root';
update mysql.user set Create_user_priv='y' where user='root';

Enregistrez et quittez TextEdit.app.

Arrêtez votre serveur mysqld. La procédure à suivre dépend de l'installation que vous avez utilisée pour MySQL. Vous avez probablement un panneau de préférences dans vos préférences système. Sinon, vous devez consulter la documentation de votre installation MySQL.

Ouvrez Terminal.app (Applications/Utilitaires) Saisissez les commandes suivantes:

Sudo mysqld --skip-grant-tables &  #start your MySQL server without access control
mysql -vv < ~/restore_root_privileges.sql
Sudo mysqladmin -p shutdown

Démarrez votre serveur MySQL comme d'habitude, par ex. de PreferencePanes.
Dans Terminal.app: entrez les informations suivantes:

mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
mysql> quit;

C'est tout. Sans aucune garantie. Vous pouvez perdre toutes vos données si vous faites quelque chose de mal. Sauvegardez d'abord vos fichiers mysql.

Si vous avez quelque chose comme:

-bash: mysql: command not found

cela signifie que votre installation est incorrecte et que vous devriez trouver où sont vos binaires mysql, et devez entrer le répertoire dans votre variable PATH.

11
jm666

Je viens de recevoir le même - problème. J'utilise Xammp sur Windows 7. J'ai accidentellement supprimé un utilisateur root dans phpmyadmin.

Il semble que j'ai été en mesure de résoudre le problème de manière simple comme ceci:

Arrêtez Apache et mysql dans le contrôle xammp

Allez dans .../xammp/mysql

Vous verrez le fichier "resetroot". Exécutez ce fichier

Une fois cette application terminée, redémarrez votre mysql et Apache

Allez sur phpmyadmin et vous verrez l'utilisateur root restauré

Vous pouvez maintenant accéder à nouveau à toutes vos bases de données

6
Alex Val

en utilisant mamp. J'ai fait l'erreur apparemment courante de supprimer l'utilisateur root lors de la création d'un autre utilisateur, j'ai été exclu!

j'ai donc trouvé ce post et essayé de suivre les instructions mais ...

J'obtenais ces erreurs: -bash: mysql: commande introuvable en essayant d'exécuter la commande mysql et plus tard, j'obtenais cette erreur DELETE commande refusée à l'utilisateur '' @ 'localhost' pour la table 'user' lors de la vérification de la configuration correcte privilèges à l'utilisateur root et faire quoi que ce soit avec cet utilisateur une fois mysql dans Shell.

donc avant de pouvoir utiliser les commandes eric et rolando postées (merci les gars pour ça) c'est ce que j'ai fait

Je dois démarrer mysqld correctement, j'ai donc dû faire ce qui suit

  1. arrêter le processus mysqld trouvé avec

    ps aux | grep mysql

  1. et arrêté tout processus mysql trouvé avec

    kill -9 [pid]

  1. alors j'ai dû redémarrer mysqld correctement à partir de l'emplacement réel où j'avais des binaires mysql, cette commande démarrera mysld sans demander de mot de passe (un peu comme en mode sécurisé)

/ Applications/MAMP/Bibliothèque/bin/mysqld --skip-grant-tables --skip-networking &

J'ai essayé avec mon fichier.cnf mais je n'ai pas pu le faire fonctionner.

  1. alors je devais aller dans mysql dans Shell

/ Applications/MAMP/Bibliothèque/bin/mysql -u root -p

(si vous êtes invité à entrer un mot de passe, appuyez simplement sur Entrée)

  1. puis exécutez les commandes eric et rolando publiées, cette fois je n'ai pas eu d'erreur "Commande DELETE refusée à l'utilisateur '' @ 'localhost' pour la table 'user'" si vous le faites, vous n'avez pas démarré mysqld correctement

  2. puis arrêtez le service mysqld:

/ Applications/MAMP/Bibliothèque/bin/mysqld stop

puis redémarré mamp comme d'habitude avec le gui

et tout a recommencé à travailler comme avant ... J'étais tellement soulagé !!!

2 heures de panique et d'essais et d'erreurs avec la console ... de précieuses leçons apprises ..

Si j'ai foiré l'une des commandes ou l'explication (ce qui pourrait être le cas lorsque je remontais mes étapes en écrivant ce message, faites-le moi savoir. Je serais heureux de mettre à jour le message.

enfin ne donnez pas. ça peut être fait!!

3
Francisco Cortes

J'ai fait exactement la même chose hier, étant nouveau pour les macs et le serveur SQL. J'ai accidentellement supprimé l'utilisateur root parce que j'ai appuyé sur le mauvais bouton Privilèges tout en essayant de configurer un nouvel utilisateur et un nouveau mot de passe.

Je n'avais aucun travail d'aucune utilité sur cet ordinateur, donc je ne craignais pas de supprimer mes sites Web.

  • J'ai d'abord désinstallé MAMP Pro (pour lequel j'avais une icône dans Launchpad).
  • J'ai ensuite supprimé le répertoire MAMP du dossier Applications.
  • J'ai ensuite réinstallé MAMP à partir du téléchargement Internet.
  • J'ai ensuite SUPPRIMÉ tous mes cookies, cache, etc. du safari.
  • J'ai éteint mon ordinateur et redémarré.

J'ai maintenant accès à phpMyAdmin via le lien sur la page de démarrage une fois MAMP démarré.

1
Eddie

Je voulais juste expliquer comment j'ai résolu ce problème. Si vous avez accidentellement supprimé l'utilisateur root dans MAMP PRO et que vous utilisez OSX avec des sauvegardes Time Machine. Accédez simplement à ce dossier dans le Finder:

/ Bibliothèque/Support d'application/appsolute /

Ensuite, entrez "Time Machine" dans la barre de menu supérieure et restaurez une sauvegarde récente du dossier MAMP PRO. J'ai économisé beaucoup de tracas pour moi.

1
user3349250

A fonctionné pour moi sur CentOS 6. J'ai dû supprimer Create_tablespace_priv = 'y' parce que ma version a squawké sinon tout allait bien.

0
Robert Jeffares

Ok, arrêtez d'exécuter votre MySQL et ouvrez les fichiers d'installation fournis. Il devrait y avoir un fichier bat nommé resetroot.bat. Exécutez-le et votre problème aura disparu.

0
hands

MySQL 5.7 avait remplacé le champ Mot de passe par chaîne d'authentification (dans la table mysql.user); donc cela a fonctionné pour moi.

INSERT INTO mysql.user 
SET user = 'root', 
Host = 'localhost', 
authentication_string =Password('Yours_own_password'), 
Select_priv = 'y',
Insert_priv = 'y',
Update_priv = 'y',
Delete_priv = 'y',
Create_priv = 'y',
Drop_priv = 'y',
Reload_priv = 'y',
Shutdown_priv = 'y',
Process_priv = 'y',
File_priv = 'y',
Grant_priv = 'y',
References_priv = 'y',
Index_priv = 'y',
Alter_priv = 'y',
Show_db_priv = 'y',
Super_priv = 'y',
Create_tmp_table_priv = 'y',
Lock_tables_priv = 'y',
Execute_priv = 'y',
Repl_slave_priv = 'y',
Repl_client_priv = 'y',
Create_view_priv = 'y',
Show_view_priv = 'y',
Create_routine_priv = 'y',
Alter_routine_priv = 'y',
Create_user_priv = 'y',
Event_priv = 'y',
Trigger_priv = 'y',
Create_tablespace_priv = 'y',
ssl_cipher = '',
x509_issuer = '',
x509_subject = '';
0