J'essaye de changer le mot de passe root MySql.
Ce que j'ai fait est ci-dessous.
- Installez MySql-5.7.6 ~ .dmg (Community Server) et workbench.
- Éteignez le serveur dans les préférences du système OSX.
- Accédez à MySql avec la console. La commande était
mysqld_safe --skip-grant
- Exécutez
update user set password=password('1111') where user='root';
et obtenez un message d'erreur ->ERROR 1054 (42S22): Unknown column 'password' in 'field list'
.
FYI, je l'ai fait use mysql;
. J'ai donc sélectionné la requête sur la table des utilisateurs et trouvé que la colonne de mot de passe n'existe pas.
C'est vraiment bizarre. Est-il possible que la table utilisateur d'origine n'ait pas de colonne de mot de passe?
Comment puis-je changer le mot de passe, qui n'existe pas?
Merci pour votre réponse: D
UPDATE mysql.user SET authentication_string= 'password' WHERE User = 'root';
Parce que le champ 'Password' a été supprimé par mysql et remplacé par authentication_string. Remarque: que la fonction mysql PASSWORD ('password') repose sur l'algorithme MD5 qui a été craqué il y a longtemps à l'aide de l'attaque du jour de naissance. Donc, l'utiliser donne un faux sentiment de sécurité car un attaquant peut simplement coller les hachages qu'il produit dans un site Web public comme hashkiller.co.uk/md5-decrypter.aspx et récupérer votre mot de passe en texte brut.Réponses:
Dans MySQL 5.7, le champ du mot de passe dans le champ de la table mysql.user a été supprimé, maintenant le nom du champ est 'authentication_string'.
Choisissez d'abord la base de données:
Et puis montrez les tableaux:
Vous trouverez la table des utilisateurs, voyons maintenant ses champs:
Surprise! Il n'y a pas de champ nommé «mot de passe», le champ du mot de passe est nommé «chaîne_authentification». Alors, faites simplement ceci:
Maintenant, tout ira bien.
Par rapport à MySQL 5.6, les changements sont assez importants: Quoi de neuf dans MySQL 5.7
la source
use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root'; # THIS LINE
flush privileges;
quit;
Cette erreur se produit si vous n'avez pas défini le mot de passe lors de l'installation, dans ce cas, le mysql en utilisant le plugin unix-socket .
Mais si supprimez le lien du plugin des paramètres (table mysql.user) aura un autre problème. Cela ne résout pas le problème et crée un autre problème. Pour corriger le lien supprimé et définir le mot de passe ("PWD"), procédez comme suit:
1) Exécutez avec
--skip-grant-tables
comme indiqué ci-dessus.Si cela ne fonctionne pas, ajoutez la chaîne
skip-grant-tables
dans la section[mysqld]
de/etc/mysql/mysql.conf.d/mysqld.cnf
. Alors faissudo service mysql restart
.2) Exécutez
mysql -u root -p
, puis (changez "PWD"):alors
sudo service mysql restart
. Vérifier:mysql -u root -p
.Avant de
restart
supprimer cette chaîne du fichier mysqld.cnf, si vous la définissez ici.la source
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '("MYNEWPASSWORD"), plugin="mysql_native_password"
Un piège dans lequel je suis tombé est qu'il n'y a pas de champ de mot de passe maintenant, il a été renommé ainsi:
update user set password=PASSWORD("YOURPASSWORDHERE") where user='root';
Devrait maintenant être:
update user set authentication_string=password('YOURPASSWORDHERE') where user='root';
la source
Utilisez la
ALTER USER
commande plutôt que d'essayer de mettre à jour uneUSER
ligne. Gardez à l'esprit qu'il peut y avoir plus d'un utilisateur `` root '', car les entités utilisateur sont également qualifiées par la machine à partir de laquelle elles se connectenthttps://dev.mysql.com/doc/refman/5.7/en/alter-user.html
Par exemple.
la source
Cela ne fonctionnait avec moi que lorsque je "vidais" après les commandes mentionnées ici. Voici la liste complète des commandes que j'ai utilisées:
Les réponses précédentes peuvent ne pas fonctionner pour les versions ultérieures de mysql. Essayez ces étapes si les réponses précédentes n'ont pas fonctionné pour vous:
1- Cliquez sur l'icône wamp> mysql> console mysql
2- écrire les commandes suivantes, une par une
la source
Merci de votre aide. Juste au cas où les gens ont encore des problèmes, essayez ceci.
Pour MySQL version 5.6 et moins
Vous avez oublié le mot de passe de votre Mac OS X «ROOT» et devez le réinitialiser? Suivez ces 4 étapes simples:
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
sudo /usr/local/mysql/bin/mysql -u root UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES; \q
Pour MySQL version 5.7 et plus
'System Prefrences' > MySQL > 'Stop MySQL Server'
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
sudo /usr/local/mysql/bin/mysql -u root UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES; \q
la source
Pour ce problème, j'ai utilisé une méthode simple et grossière, renommer le nom du champ en mot de passe, la raison en est que j'utilise le logiciel premium mac navicat dans l'erreur d'opération visuelle: Colonne inconnue 'mot de passe' dans 'liste des champs', le le logiciel lui-même utilise un mot de passe pour que je ne puisse pas fonctionner facilement. Par conséquent, je racine dans la ligne de commande de la base de données, exécutez
Et puis modifiez le nom du champ:
Après tout normal.
la source
Cause fondamentale: root n'a pas de mot de passe, et votre instruction de connexion python doit refléter cela.
Pour résoudre l'erreur 1698, remplacez votre mot de passe de connexion python par «».
Remarque: la mise à jour manuelle du mot de passe de l'utilisateur ne résoudra pas le problème, vous obtiendrez toujours l'erreur 1698
la source
rappelez-vous que le mot de passe doit être défini davantage même après le redémarrage de mysql comme ci-dessous
la source