Comment obtenir tous les privilèges de retour à l'utilisateur root de MySQL?
J'ai connecté à MySQL avec l'option --skip-grant-tables. Mais je ne sais pas comment obtenir tous les privilèges jusqu'à la racine de l'utilisateur.
Erreur
Requête SQL:
GRANT ALL PRIVILEGES ON * . *
'root'@'localhost';MySQL a dit: Documentation
1290 - Le serveur MySQL est en cours d'exécution avec l'option --skip-grant-tables option pour
il ne peut pas exécuter cette instruction
Erreur
Requête SQL: Modifier
GRANT ALL PRIVILEGES ON * . *
'root'@'localhost' par
MAX_QUERIES_PER_HOUR 0
MAX_CONNECTIONS_PER_HOUR 0
MAX_UPDATES_PER_HOUR 0
MAX_USER_CONNECTIONS 0 ;MySQL a dit: Documentation
1290 - Le serveur MySQL est en cours d'exécution avec l'option --skip-grant-tables option pour
il ne peut pas exécuter cette instruction
Il semble y avoir une solution à cette question/réponse, stackoverflow.com/questions/1709078/...
OriginalL'auteur Steven | 2009-11-11
Vous devez vous connecter pour publier un commentaire.
Si vous ne pouvez pas acces au serveur mysql en tant que root, vous devez supprimer ou ne peut pas restaurer la racine de tous les enregistrements dans mysql.table utilisateur, supprimer tous les et ajoutez un nouvel enregistrement.
Vous devez utiliser le MOT de passe mysql() de la fonction de hachage votre mot de passe en texte clair.
vérifier pour plus d'informations http://dev.mysql.com/doc/refman/5.1/en/password-hashing.html
D'abord arrêter le serveur mysql et de lancer mysqld avec l'option --skip-grant-tables.
De hachage votre mot de passe en texte clair.
Utilisation de base de données mysql pour appliquer les modifications.
Supprimer tous les racine des dossiers
Ajouter un nouvel enregistrement que super-utilisateur peut accéder à tous les privilèges à partir de votre adresse ip.
Vider les changements.
Sortie de ligne de commande de mysql .
Redémarrer mysqld service.
si vous exécutez cette les commandes mysql/requêtes, vous obtiendrez un nouvel accès au serveur mysql.
OriginalL'auteur cyb0k
Tout d'abord, arrêtez le serveur MySQL et puis démarrez avec le
--skip-grant-tables
option.Ensuite, connectez-vous à votre instance sans mot de passe:
Puis, réinitialiser le mot de passe pour l'utilisateur root.
Basculer en mode normal de MySQL puis se connecter sans mot de passe.
OriginalL'auteur Mansur Ali
Lorsque vous exécutez mysql à l'aide de
--skip-grant-tables
mysql de ne pas vérifier les autorisations. Donc, fondamentalement, vous ne pouvez rien faire.Pour récupérer les privilèges root, vous devez exécuter une requête dans
mysql
DB comme cejuste pour vérifier si l'utilisateur root est toujours là
si ok:
après vous pouvez redémarrer mysql sans
--skip-grant-tables
et de la racine de l'utilisateur devrait être capable de faire certains de subvention afin que votre requête devrait fonctionnerOriginalL'auteur RageZ
Si le but de votre option --skip-grant-tables est d'insérer une nouvelle demande de Subvention, vous pouvez le faire par l'insertion d'une ligne dans mysql.utilisateur (voir les autres réponses)
Si votre défi est de donner à cette nouvelle Subvention, tous les privilèges requis (nombre O/N colonnes), alors vous pouvez copiez une racine de subvention. Et régler uniquement ce que vous avez besoin.
OriginalL'auteur user18099
Pour mysql 8.0.12+
J'ai essayé de la documentation (ne fonctionne pas) j'ai essayé plusieurs autres options, ont tous échoué.
MOT de passe() est obsolète, DÉFINIR le MOT de passe est désactivé, MODIFIER l'UTILISATEUR est désactivée.
1. arrêter le service mysql
2. Commencer de cette façon: /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
3. Login (mysql) et exec: update user set authentication_string=" où
Utilisateur='root';
4. killall mysqld
5. Démarrer le service de nouveau
Maintenant, vous pouvez utiliser le bouton "définir le mot de passe" ou "modifier utilisateur" après la connexion à l'intérieur d'un mot de passe
OriginalL'auteur John
Pour exécuter un
GRANT
requête, vous venez de ne pas exécuter mysql avecskip-grant-tables
- qu'est-ce compliqué à ce sujet...?...donc il ne devrait pas être à l'aide de
skip-grant-tables
-- pourquoi voudrait-il que etGRANT
? Mais je dois admettre que votre approche fonctionne aussi.Il semble qu'il a oublié le mot de passe pour l'utilisateur root.
La question semble être sur d'obtenir le privilège de drapeaux de retour. Vous pouvez utiliser skip-grant pour vous connecter. Mais vous ne pouvez pas accorder. Vous pouvez insérer une ligne dans mysql.utilisateur pour une nouvelle racine de la ligne de la subvention, mais la requête a besoin pour correspondre à de nombreux privilèges colonnes. Un O/N pour chaque privilège.
OriginalL'auteur Alex Martelli