Réponses:
Arrêtez le processus MySQL.
Démarrez le processus MySQL avec l'option --skip-grant-tables.
Démarrez le client de la console MySQL avec l'option -u root.
Listez tous les utilisateurs;
SELECT * FROM mysql.user;
Réinitialiser le mot de passe;
UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';
Mais N'OUBLIEZ PAS de
Arrêtez le processus MySQL
Démarrez le processus MySQL normalement (c'est-à-dire sans l'option --skip-grant-tables)
lorsque vous avez terminé. Sinon, la sécurité de votre base de données pourrait être compromise.
dpkg-reconfigure mysql-server-5.5
commande pour réinitialiser le mot de passe root MySQL?
-u
sert à rien de le faire car il est ignoré lorsque le serveur est démarré avec --skip-grant-tables
.
mysql.user
appelée password
, utilisez à la authentication_string
place.
Malheureusement, votre mot de passe utilisateur est irrécupérable. Il a été haché avec un hachage à sens unique qui, si vous ne le savez pas, est irréversible. Je recommande d'aller avec Xenph Yan ci-dessus et d'en créer un nouveau.
Vous pouvez également utiliser la procédure suivante du manuel pour réinitialiser le mot de passe de tout compte racine MySQL sous Windows:
Menu Démarrer -> Panneau de configuration -> Outils d'administration -> Services
Recherchez ensuite le service MySQL dans la liste et arrêtez-le. Si votre serveur ne fonctionne pas en tant que service, vous devrez peut-être utiliser le Gestionnaire des tâches pour le forcer à s'arrêter.
Créez un fichier texte et placez-y les instructions suivantes. Remplacez le mot de passe par le mot de passe que vous souhaitez utiliser.
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
Les instructions UPDATE et FLUSH doivent chacune être écrites sur une seule ligne. L' instruction UPDATE réinitialise le mot de passe de tous les comptes racine existants et l' instruction FLUSH indique au serveur de recharger les tables d'octroi en mémoire.
Ouvrez une fenêtre de console pour accéder à l'invite de commande:
Menu Démarrer -> Exécuter -> cmd
Démarrez le serveur MySQL avec l' option spéciale --init-file :
C:\> C:\mysql\bin\mysqld-nt --init-file = C:\mysql-init.txt
Si vous avez installé MySQL à un emplacement autre que C: \ mysql , ajustez la commande en conséquence.
Le serveur exécute le contenu du fichier nommé par l' option --init-file au démarrage, en modifiant le mot de passe de chaque compte root .
Vous pouvez également ajouter l' option --console à la commande si vous souhaitez que la sortie du serveur apparaisse dans la fenêtre de la console plutôt que dans un fichier journal.
Si vous avez installé MySQL à l'aide de l'assistant d'installation MySQL, vous devrez peut-être spécifier une option --defaults-file :
C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini" --init-file=C:\mysql-init.txt
Le paramètre --defaults-file approprié peut être trouvé à l'aide du Gestionnaire de services:
Menu Démarrer -> Panneau de configuration -> Outils d'administration -> Services
Recherchez le service MySQL dans la liste, cliquez dessus avec le bouton droit de la souris et choisissez l'option Propriétés. Le champ Chemin d'accès à l'exécutable contient le paramètre --defaults-file .
Vous devriez maintenant pouvoir vous connecter à MySQL en tant que root en utilisant le nouveau mot de passe.
mysqld-nt
au lieu de mysqld
?
Une amélioration de la réponse la plus utile ici:
1] Pas besoin de redémarrer le serveur mysql
2] Problème de sécurité pour un serveur MySQL connecté à un réseau
Il n'est pas nécessaire de redémarrer le serveur MySQL.
utiliser FLUSH PRIVILEGES;
après l'instruction de mise à jour mysql.user pour le changement de mot de passe.
L'instruction FLUSH indique au serveur de recharger les tables d'octroi en mémoire afin qu'il remarque le changement de mot de passe.
Le --skip-grant-options
permet à quiconque de se connecter sans mot de passe et avec tous les privilèges. Parce que ce n'est pas sûr, vous voudrez peut-être
utilisez --skip-grant-tables en conjonction avec --skip-networking pour empêcher les clients distants de se connecter.
from: reference: resetting-permissions-generic
mysql.user
? Cependant, ce n'est souvent pas le cas.
Bien que vous ne puissiez pas récupérer directement un mot de passe MySQL sans brutforcing, il pourrait y avoir un autre moyen - si vous avez utilisé MySQL Workbench pour vous connecter à la base de données et que vous avez enregistré les informations d'identification dans le «coffre-fort», vous êtes en or.
Sous Windows, les informations d'identification sont stockées dans % APPDATA% \ MySQL \ Workbench \ workbench_user_data.dat - cryptées avec CryptProtectData (sans aucune entropie supplémentaire). Le décryptage est un jeu d'enfant:
std::vector<unsigned char> decrypt(BYTE *input, size_t length) {
DATA_BLOB inblob { length, input };
DATA_BLOB outblob;
if (!CryptUnprotectData(&inblob, NULL, NULL, NULL, NULL, CRYPTPROTECT_UI_FORBIDDEN, &outblob)) {
throw std::runtime_error("Couldn't decrypt");
}
std::vector<unsigned char> output(length);
memcpy(&output[0], outblob.pbData, outblob.cbData);
return output;
}
Ou vous pouvez consulter ce fil DonationCoder pour la source + l'exécutable d'une implémentation rapide et sale.
Exécutez la commande suivante dans le terminal pour vous connecter au SGBD (vous avez besoin d'un accès root):
sudo mysql -u root -p;
exécuter le mot de passe de mise à jour de l'utilisateur cible (pour mon exemple, le nom d'utilisateur est mousavi
et son mot de passe doit être 123456
):
UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='mousavi';
à ce stade, vous devez effectuer un vidage pour appliquer les modifications:
FLUSH PRIVILEGES;
Terminé! Vous l'avez fait sans aucun arrêt ou redémarrage du service mysql.
Si vous avez un accès root au serveur sur lequel mysql est en cours d'exécution, vous devez arrêter le serveur mysql en utilisant cette commande
sudo service mysql stop
Maintenant, lancez mysql en utilisant cette commande
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
Vous pouvez maintenant vous connecter à mysql en utilisant
sudo mysql
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
Des instructions complètes peuvent être trouvées ici http://www.techmatterz.com/recover-mysql-root-password/
Connectez-vous à MySql à partir de Windows cmd en utilisant l'utilisateur existant:
mysql -u nom d'utilisateur -p
Entrez le mot de passe: ****
Exécutez ensuite la commande suivante:
mysql> SELECT * FROM mysql.user;
Après cette copie du mot de passe md5 crypté pour l'utilisateur correspondant et il existe plusieurs applications décryptées par mot de passe en ligne disponibles sur le Web. Utilisez ce mot de passe de déchiffrement et utilisez-le pour vous connecter la prochaine fois. ou mettez à jour le mot de passe de l'utilisateur à l'aide de la commande fluide:
mysql> UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';
Puis connectez-vous en utilisant le nouveau mot de passe et l'utilisateur.
SI vous avez configuré ODBC, vous pouvez obtenir le mot de passe à partir du fichier de configuration ODBC. C'est dans /etc/odbc.ini pour Linux et dans le dossier Software / ODBC dans le registre de Windows (il y en a plusieurs - cela peut prendre un peu de chasse)
Enregistrez le fichier. Pour cet exemple, le fichier sera nommé C: \ mysql-init.txt. il demande des autorisations administratives pour enregistrer le fichier
Bien qu'une interprétation stricte, logique et informatique de la question de l'OP consisterait à exiger à la fois "Comment récupérer mon nom d'utilisateur MySQL" et "mot de passe" - j'ai pensé qu'il pourrait être utile à quelqu'un d'aborder l' interprétation OR . En d'autres termes ...
1) Comment récupérer mon nom d'utilisateur MySQL?
OU
2) mot de passe
Cette dernière condition semble avoir déjà été amplement traitée, donc je ne m'en soucierai pas. Ce qui suit est une solution pour le cas "Comment récupérer mon nom d'utilisateur MySQL" seul. HIH.
Pour trouver votre nom d'utilisateur mysql, exécutez les commandes suivantes à partir du shell mysql ...
SELECT User FROM mysql.user;
il imprimera un tableau de tous les utilisateurs de mysql.