MySQL user DB n'a pas de colonnes de mots de passe - installation de MySQL sur OSX

j'essaie de changer le mot de passe MySql root.

Ce que j'ai fait est ci-dessous.

  1. Installer MySql-5.7.6 ~ .dmg (serveur communautaire) et workbench.
  2. désactiver le serveur sur les préférences du système OSX.
  3. accès MySql avec console. La commande était mysqld_safe --skip-grant
  4. exécute update user set password=password('1111') where user='root'; et reçoit un message d'erreur -- > ERROR 1054 (42S22): Unknown column 'password' in 'field list' .

POUR INFO, j'ai fait use mysql; . J'ai donc sélectionné la requête sur la table d'utilisateur et trouvé la colonne de mot de passe n'existe pas.

C'est très bizarre. Est-il possible que la table d'utilisateur originale n'ait pas de colonne de mot de passe?

Comment changer le mot de passe, qui n'existe pas?

Merci pour votre réponse: d

116
demandé sur Juneyoung Oh 2015-06-07 14:08:27

9 réponses

dans MySQL 5.7, le champ password dans mysql.le champ user table a été supprimé, maintenant le nom du champ est 'authentication_string'.

choisissez D'abord la base de données:

mysql>use mysql;

et ensuite afficher les tableaux:

mysql>show tables;

vous trouverez la table d'utilisateur, Maintenant voyons 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_string  | 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)

surpriseIl n'y a pas de champ nommé 'password', le champ password est nommé 'authentication_string'. Alors, faites ceci:

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

maintenant, tout ira bien.

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

402
répondu nodejh 2016-07-26 10:45:27

un piège dans lequel je suis tombé est qu'il 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';

20
répondu John C 2016-08-07 22:49:45

utilisez la commande ALTER USER plutôt que d'essayer de mettre à jour une ligne USER . Gardez à l'esprit qu'il peut y avoir plus d'un utilisateur "root", parce que les entités utilisateur sont également qualifiés par la machine à partir de laquelle ils 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' 
14
répondu O. Jones 2015-06-07 11:38:31

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 unix-socket plugin .

mais si supprimer le lien du plugin des paramètres (table mysql.de l'utilisateur) d'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") faire:

1) Exécuter avec --skip-grant-tables comme dit ci-dessus.

si cela ne fonctionne pas ajouter ensuite la chaîne skip-grant-tables dans la section [mysqld] de /etc/mysql/mysql.conf.d/mysqld.cnf . Alors n' sudo service mysql restart .

2) Lancer mysql -u root -p , puis (changer "PWD"):

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

quit

puis sudo service mysql restart . Check: mysql -u root -p .

avant restart supprimez cette chaîne du fichier mysqld.cnf, si vous le définissez.

7
répondu bl79 2017-04-19 14:43:06

Merci pour votre aide. Juste au cas où si les gens ont encore des problèmes, essayez ceci.

pour MySQL version 5.6 et moins

avez-vous oublié votre mot de passe Mac OS X 'ROOT' et avez-vous besoin de le réinitialiser?  Suivez ces 4 étapes simples:

  1. Arrêter le serveur mysqld.  Typiquement, cela peut être fait à partir de 'Préfrences système' > MySQL > 'Stop MySQL Server'
  2. démarrer le serveur dans le coffre-fort mode avec pontage privilège      À 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
  4. arrêtez à nouveau le serveur mysqld et redémarrez-le en mode normal.

pour MySQL version 5.7 et plus

  1. Arrêter le serveur mysqld.  Généralement, cela peut être fait par de 'System Prefrences' > MySQL > 'Stop MySQL Server'
  2. démarrer le serveur en mode de sécurité avec privilège bypass      À 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_string=PASSWORD('NewPassword') WHERE User='root';      FLUSH PRIVILEGES;      \q      
  4. arrêtez à nouveau le serveur mysqld et redémarrez-le en mode normal.
4
répondu eli 2016-09-19 10:10:20

cela n'a fonctionné avec moi que lorsque j'ai" tiré la chasse " 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 pourraient ne pas fonctionner pour les versions mysql ultérieures. 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-Ecrire les commandes suivantes, une par une

use mysql;
update user set authentication_string=password('your_password') where user='root';
FLUSH PRIVILEGES;
quit
3
répondu Amgad 2016-04-30 18:24:52

pour ce problème, j'ai utilisé une méthode simple et rude, renommer le nom du champ en mot de passe, la raison pour cela est que j'utilise le logiciel Mac navicat premium dans l'erreur d'opération visuelle: Colonne inconnue 'mot de passe' dans 'Liste de champ ', le logiciel lui-même utilise mot de passe de sorte que je ne peux pas fonctionner facilement. Par conséquent, je root dans la ligne de commande de la base de données, lancer

Use mysql;

puis modifier le nom du champ:

ALTER TABLE user CHANGE authentication_string password text;

après tout normal.

2
répondu luyishisi 2017-04-18 02:35:16

cause racine: root n'a pas de mot de passe, et votre déclaration Python connect devrait refléter cela.

pour résoudre l'erreur 1698, changez votre mot de passe Python connect en".

note: la mise à jour manuelle du mot de passe de l'utilisateur ne résoudra pas le problème, vous encore obtenir l'erreur 1698

0
répondu Jameskchau 2018-06-03 01:48:37

mémoriser le mot de passe doit être défini le plus de même après le redémarrage de mysql comme ci-dessous

SET PASSWORD = PASSWORD('root');
0
répondu Pravin 2018-08-30 18:23:10