MySQL user DB n’a pas de colonnes de mot de passe – Installation de MySQL sur OSX

J’essaie de changer le mot de passe root MySql.

Ce que j’ai fait est ci-dessous.

  1. Installez MySql-5.7.6 ~ .dmg (Community Server) et Workbench.
  2. Éteignez le serveur sur les préférences du système OSX.
  3. Accédez à MySQL avec la console. La commande était mysqld_safe --skip-grant
  4. Exécutez la update user set password=password('1111') where user='root'; et a un message d’erreur -> ERROR 1054 (42S22): Unknown column 'password' in 'field list' .

Pour info, j’ai use mysql; . J’ai donc sélectionné la requête sur la table utilisateur et la colonne de mot de passe trouvée n’existait pas.

C’est très 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

Dans MySQL 5.7, le champ mot de passe du champ de la table mysql.user a été supprimé, maintenant le nom du champ est “authentication_ssortingng”.

Choisissez d’abord la firebase database:

 mysql>use mysql; 

Et ensuite montrer les tableaux:

 mysql>show tables; 

Vous trouverez la table utilisateur, voyons maintenant ses champs:

 mysql> describe user; +------------------------+-----------------------------------+------+-----+-----------------------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------------+-----------------------------------+------+-----+-----------------------+-------+ | Host | char(60) | NO | PRI | | | | User | char(16) | NO | PRI | | | | Select_priv | enum('N','Y') | NO | | N | | | Insert_priv | enum('N','Y') | NO | | N | | | Update_priv | enum('N','Y') | NO | | N | | | Delete_priv | enum('N','Y') | NO | | N | | | Create_priv | enum('N','Y') | NO | | N | | | Drop_priv | enum('N','Y') | NO | | N | | | Reload_priv | enum('N','Y') | NO | | N | | | Shutdown_priv | enum('N','Y') | NO | | N | | | Process_priv | enum('N','Y') | NO | | N | | | File_priv | enum('N','Y') | NO | | N | | | Grant_priv | enum('N','Y') | NO | | N | | | References_priv | enum('N','Y') | NO | | N | | | Index_priv | enum('N','Y') | NO | | N | | | Alter_priv | enum('N','Y') | NO | | N | | | Show_db_priv | enum('N','Y') | NO | | N | | | Super_priv | enum('N','Y') | NO | | N | | | Create_tmp_table_priv | enum('N','Y') | NO | | N | | | Lock_tables_priv | enum('N','Y') | NO | | N | | | Execute_priv | enum('N','Y') | NO | | N | | | Repl_slave_priv | enum('N','Y') | NO | | N | | | Repl_client_priv | enum('N','Y') | NO | | N | | | Create_view_priv | enum('N','Y') | NO | | N | | | Show_view_priv | enum('N','Y') | NO | | N | | | Create_routine_priv | enum('N','Y') | NO | | N | | | Alter_routine_priv | enum('N','Y') | NO | | N | | | Create_user_priv | enum('N','Y') | NO | | N | | | Event_priv | enum('N','Y') | NO | | N | | | Trigger_priv | enum('N','Y') | NO | | N | | | Create_tablespace_priv | enum('N','Y') | NO | | N | | | ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | | | ssl_cipher | blob | NO | | NULL | | | x509_issuer | blob | NO | | NULL | | | x509_subject | blob | NO | | NULL | | | max_questions | int(11) unsigned | NO | | 0 | | | max_updates | int(11) unsigned | NO | | 0 | | | max_connections | int(11) unsigned | NO | | 0 | | | max_user_connections | int(11) unsigned | NO | | 0 | | | plugin | char(64) | NO | | mysql_native_password | | | authentication_ssortingng | text | YES | | NULL | | | password_expired | enum('N','Y') | NO | | N | | | password_last_changed | timestamp | YES | | NULL | | | password_lifetime | smallint(5) unsigned | YES | | NULL | | | account_locked | enum('N','Y') | NO | | N | | +------------------------+-----------------------------------+------+-----+-----------------------+-------+ 45 rows in set (0.00 sec) 

Surprise! Il n’y a pas de champ nommé ‘password’, le champ mot de passe est nommé ‘authentication_ssortingng’. Alors, faites ceci:

 update user set authentication_ssortingng=password('1111') where user='root'; 

Maintenant, tout ira bien.

Comparé à MySQL 5.6, les changements sont assez importants: Quoi de neuf dans MySQL 5.7

Un piège dans lequel je suis tombé est qu’il n’ya 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_ssortingng=password('YOURPASSWORDHERE') where user='root';

Utilisez la commande ALTER USER plutôt que d’essayer de mettre à jour une ligne USER . N’oubliez pas qu’il peut y avoir plusieurs utilisateurs «root», car les entités utilisateurs sont également qualifiées par la machine à partir de laquelle elles se connectent.

https://dev.mysql.com/doc/refman/5.7/en/alter-user.html

Par exemple.

 ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-password' ALTER USER 'root'@'*' IDENTIFIED BY 'new-password' 

Cette erreur se produit si vous n’avez pas défini le mot de passe lors de l’installation, dans ce cas le mysql utilisant le plug-in unix-socket .

Mais si supprimer le lien du plugin à partir des parameters (table mysql.user) sera 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écuter 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 . Ensuite, faites sudo service mysql restart .

2) Lancez mysql -u root -p , puis (changez “PWD”):

 update mysql.user set authentication_ssortingng=PASSWORD("PWD"), plugin="mysql_native_password" where User='root' and Host='localhost'; flush privileges; quit 

puis sudo service mysql restart . Vérifiez: mysql -u root -p .

Avant de restart supprimez cette chaîne du fichier mysqld.cnf, si vous l’avez définie.

Merci de votre aide. Juste au cas où les gens ont toujours des problèmes, essayez ceci.

Pour MySQL version 5.6 et moins

Avez-vous oublié votre mot de passe «ROOT» Mac OS X et devez-vous le réinitialiser? Suivez ces 4 étapes simples:

  1. Arrêtez le serveur mysqld. Généralement, cela peut être fait à partir de ‘System Prefrences’> MySQL> ‘Stop MySQL Server’
  2. Démarrer le serveur en mode sans échec avec contournement de privilèges À partir d’un terminal: sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. Dans une nouvelle fenêtre de terminal: sudo /usr/local/mysql/bin/mysql -u root UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES; \q sudo /usr/local/mysql/bin/mysql -u root UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES; \q
  4. Arrêtez le serveur mysqld et redémarrez-le en mode normal.

Pour MySQL version 5.7 et plus

  1. Arrêtez le serveur mysqld. Généralement, cela peut être fait à partir de 'System Prefrences' > MySQL > 'Stop MySQL Server'
  2. Démarrer le serveur en mode sans échec avec contournement de privilèges À partir d’un terminal: sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. Dans une nouvelle fenêtre de terminal: sudo /usr/local/mysql/bin/mysql -u root UPDATE mysql.user SET authentication_ssortingng=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES; \q sudo /usr/local/mysql/bin/mysql -u root UPDATE mysql.user SET authentication_ssortingng=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES; \q
  4. Arrêtez le serveur mysqld et redémarrez-le en mode normal.

Cela n’a fonctionné avec moi que lorsque j’ai “vidé” 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> mysql console

2- écrire les commandes suivantes, une par une

 use mysql; update user set authentication_ssortingng=password('your_password') where user='root'; FLUSH PRIVILEGES; quit 

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 ‘champ Liste’ 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 firebase database, exécutez

 Use mysql; 

Et puis modifiez le nom du champ:

 ALTER TABLE user CHANGE authentication_ssortingng password text; 

Après tout normal.

Root Cause: root n’a pas de mot de passe et votre déclaration de connexion python doit en tenir compte.

Pour résoudre l’erreur 1698, changez votre mot de passe python connect en ”.

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

rappelez-vous que le mot de passe doit être défini plus loin, même après le redémarrage de mysql comme ci-dessous

 SET PASSWORD = PASSWORD('root');