Je me suis connecté à MySQL avec l'option --Skip-Grant-Tables. Mais je ne sais pas comment récupérer tous les privilèges à l'utilisateur root.
J'ai essayé: p> mysql dit: p> # 1290 - The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
6 Réponses :
Pour exécuter une requête subvention code>, vous venez de ne pas strong> exécuter mysql avec
Skip-subventions-tables code> - Qu'est-ce qui est compliqué à ce sujet. ..? p>
Il a besoin d'obtenir des privilèges root.
... Donc, il ne devrait pas utiliser skip-subventions-tables code> - pourquoi voudrait-il que et i>
subvention code>? Bien que j'avais aussi de vos travaux d'approche.
Il semble qu'il a oublié le mot de passe pour l'utilisateur root.
La question semble vouloir obtenir des drapeaux de privilège. Vous pouvez utiliser Skip-Subvention pour vous connecter. Mais vous ne pouvez pas accorder. Vous pouvez insérer une ligne dans MySQL.User pour une nouvelle ligne de subvention racine, mais la requête doit correspondre à de nombreuses colonnes de privilège. Un y / n pour chaque privilège.
Lorsque vous exécutez MySQL en utilisant Pour récupérer les privilèges root, vous devez exécuter une requête dans juste pour vérifier si l'utilisateur root est toujours là
Si OK: P> - Skip-Grant-Tables Code> MySQL ne vérifiera pas les autorisations. Donc, fondamentalement, vous pouvez faire n'importe quoi.
MySQL code> dB comme ceci p>
UPDATE user SET Grant_priv = 1, Super_priv = 1 WHERE user = 'root'
Dans Mariadb, la déclaration correcte est User User Set Set.priv = 'y', Super_priv = 'y', où utilisateur = 'root' code>, car il utilise Enum ('y', 'n'). Votre version d'origine a été exécutée, mais les valeurs de la table 'y' / 'n' non mises à jour, mais cette petite modification a fait le tour.
Si vous ne pouvez pas accéder à MySQL Server en tant que racine, vous devez supprimer ou ne pas restaurer tous les enregistrements racines dans la table MySQL.User, supprimez-les tous et ajouter un nouvel enregistrement.
Vous devez utiliser MySQL Mot de passe (). hachage votre mot de passe ClearText. Vérifiez plus d'informations http://dev.mysql.com/doc /refman/5.1/fr/password-hashaing.html p>
Arrêtez le serveur MySQL et lancez MySQLD avec --Skip-Grant-Tables. P>
[root@mysql ~]# /etc/init.d/mysqld restart
Si l'insertion a du mal à correspondre aux colonnes de privilège requises, voir la réponse ci-dessous. Copiez une ligne existante si vous n'avez besoin que d'une nouvelle subvention avec E.G. une autre colonne hôte autorisée.
Sélectionnez Mot de passe ('ClearText_Password'); Erreur 1064 (42000): Vous avez une erreur dans votre syntaxe SQL; Vérifiez le manuel qui correspond à votre version de Server MySQL pour la syntaxe droite à utiliser près de '(' ClearText_Password ')' à la ligne 1
Premièrement, arrêtez le serveur MySQL, puis commencez-le avec l'option - Skip-Grant-tables CODE>.
mysql> flush privileges;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '';
mysql> flush privileges;
Si je me connecte en tant que root avec l'option Skip-Grant-Tables, je ne peux exécuter aucune déclaration. L'erreur est la suivante: "Le serveur MySQL est en cours d'exécution avec l'option --skip-subventions-tables afin qu'il ne puisse pas exécuter cette déclaration"
Dans ce cas, vous devez exécuter des privilèges de rinçage
Si l'objectif de vos tables --Skip-Grant-tables insère une nouvelle subvention, vous pouvez le faire en insérant une ligne dans mysql.user (voir d'autres réponses)
si votre défi consiste à donner cette nouvelle subvention Tous les privilèges requis (de nombreuses colonnes Y / N), vous pouvez alors copier une subvention racine existante. Et ajustez seulement ce dont vous avez besoin. P>
Cette solution est géniale pour l'automatisation de l'environnement comme dans Vagrant.
Vous pouvez maintenant utiliser
J'ai essayé la documentation (ne fonctionne pas) J'ai essayé diverses autres options, tous ont échoué. P>
Mot de passe () code> est obsolète,
Set Mot de passe code> est désactivé,
alter utilisateur code> est également désactivé. P>
/ usr / local / mysql / bin / mysqld_safe --Skip-Grant-tables Code> Li>
Mettre à jour l'utilisateur Set authentification_string = '' Où utilisateur = 'root'; code> li>
killall mysqld code> li>
Set de mot de passe code> ou
alter utilisateur code> après vous connecter sans mot de passe p>
C'est la réponse! Pourquoi le mot de passe () est-il obsolète? Si étrange.
@Mbrinson Le nombre d'étranges choses que j'ai remarquées avec MySQL est énorme. La vérité est que cela n'est pas maintenu professionnellement, il s'agit d'une combinaison de centaines de ticks laids. InnoDB est lent dans le comptage car MySQL n'utilise qu'un seul fil avec une latence énorme dans les cycles de traitement, quelle est la solution? Ils inventent un cache de résultats complexe. Avec MySQL 8, ils retirent le cache (enfreignant dix milliers d'applications) et inventent des multithreading, mais seulement multithreading pour des requêtes sans où, uniquement pour les comptes. Je pourrais donner d'innombrables exemples comme ceux-ci, il est maintenu par «Code Hackers».
Je reçois une erreur de base de données sélectionnée.
Il semble y avoir une solution dans cette question / réponse Stackoverflow.com/Questtions/1709078/...