MySQL user DB no tiene columnas de contraseña-Instalación de MySQL en OSX


Estoy tratando de cambiar la contraseña de root de MySQL.

Lo que he hecho está abajo.

  1. Instalar MySQL - 5.7.6 ~ .dmg (Community Server) y workbench.
  2. Apague el servidor en las preferencias del sistema OSX.
  3. Accede a MySQL con la consola. El comando era mysqld_safe --skip-grant
  4. Ejecute update user set password=password('1111') where user='root'; y recibió un mensaje de error > > ERROR 1054 (42S22): Unknown column 'password' in 'field list'.

Para tu información, lo hice use mysql;. Así que seleccioné la consulta en la tabla de usuario y encontré la columna de contraseña en realidad no existe.

Es muy raro. ¿Es posible que la tabla de usuario original no tenga una columna de contraseña?

¿Cómo puedo cambiar la contraseña, que no existe?

Gracias por su respuesta :D

Author: Juneyoung Oh, 2015-06-07

9 answers

En MySQL 5.7, el campo de contraseña en mysql.el campo de la tabla de usuario se eliminó, ahora el nombre del campo es 'authentication_string'.

Primero elija la base de datos:

mysql>use mysql;

Y luego mostrar las tablas:

mysql>show tables;

Encontrarás la tabla user, ahora veamos sus campos:

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)

Sorpresa!No hay un campo llamado 'password', el campo de contraseña se llama'authentication_string'. Por lo tanto, solo haz esto:

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

Ahora, todo estará bien.

Comparado con MySQL 5.6, los cambios son bastante extensos: Qué hay de nuevo en MySQL 5.7

 402
Author: nodejh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-26 10:45:27

Una trampa en la que caí es que no hay ningún campo de contraseña ahora, se ha renombrado así:

update user set password=PASSWORD("YOURPASSWORDHERE") where user='root';

Ahora Debe ser:

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

 20
Author: John C,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-07 22:49:45

Use el comando ALTER USER en lugar de intentar actualizar una fila USER. Tenga en cuenta que puede haber más de un usuario 'root', porque las entidades de usuario también están calificadas por la máquina desde la que se conectan

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

, Por ejemplo.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-password' 
ALTER USER 'root'@'*' IDENTIFIED BY 'new-password' 
 14
Author: O. Jones,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-07 11:38:31

Este error ocurre si no estableció la contraseña en la instalación, en este caso el mysql usando el plugin unix-socket.

Pero si borra el enlace del plugin desde la configuración (tabla mysql.usuario) será otro problema. Esto no soluciona el problema y crea otro problema. Para arreglar el enlace eliminado y establecer la contraseña ("PWD") haga:

1) Ejecutar con --skip-grant-tables como se dijo anteriormente.

Si no funciona entonces agrega la cadena skip-grant-tables en la sección [mysqld] de /etc/mysql/mysql.conf.d/mysqld.cnf. Entonces hazlo. sudo service mysql restart.

2) Ejecute mysql -u root -p, luego (cambie "PWD"):

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

quit

Luego sudo service mysql restart. Comprobar: mysql -u root -p.

Antes de restart elimine esa cadena del archivo mysqld.cnf, si lo pones ahí.

 7
Author: bl79,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-19 14:43:06

Gracias por su ayuda. Por si acaso, si la gente sigue teniendo problemas, prueba esto.

Para MySQL versión 5.6 y bajo

¿Ha olvidado su contraseña 'ROOT' de Mac OS X y necesita restablecerla?  Siga estos 4 sencillos pasos:

  1. Detenga el servidor mysqld.  Por lo general, esto se puede hacer desde 'Prefrencias del sistema' > MySQL > 'Detener servidor MySQL'
  2. Inicie el servidor en modo seguro con derivación de privilegios      Desde un terminal:      sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. En a nueva ventana de terminal:      sudo /usr/local/mysql/bin/mysql -u root      UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root';      FLUSH PRIVILEGES;      \q
  4. Detenga el servidor mysqld de nuevo y reinícielo en modo normal.

Para MySQL versión 5.7 y superior

  1. Detenga el servidor mysqld.  Por lo general, esto se puede hacer desde 'System Prefrences' > MySQL > 'Stop MySQL Server'
  2. Inicie el servidor en modo seguro con derivación de privilegios      Desde un terminal:      sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. En una nueva ventana 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. Detenga el servidor mysqld de nuevo y reinícielo en modo normal.
 4
Author: eli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-19 10:10:20

Solo funcionó conmigo cuando "limpié" después de los comandos mencionados aquí. Aquí está la lista completa de comandos que usé:

Las respuestas anteriores podrían no funcionar para versiones posteriores de mysql. Pruebe estos pasos si las respuestas anteriores no funcionaron para usted:

1-Haga clic en el icono wamp > mysql > mysql console

2-escribe los siguientes comandos, uno por uno

use mysql;
update user set authentication_string=password('your_password') where user='root';
FLUSH PRIVILEGES;
quit
 3
Author: Amgad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-30 18:24:52

Para este problema, utilicé un método simple y grosero, renombrar el nombre del campo a contraseña, la razón de esto es que uso el software mac navicat premium en el error de operación visual: columna desconocida 'contraseña' en 'lista de campos ', el software en sí utiliza la contraseña para que no pueda operar fácilmente. Por lo tanto, raíz en la línea de comandos de la base de datos, ejecutar

Use mysql;

Y luego modificar el nombre del campo:

ALTER TABLE user CHANGE authentication_string password text;

Después de todo normal.

 2
Author: luyishisi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-18 02:35:16

Causa raíz: root no tiene contraseña, y su instrucción python connect debería reflejarlo.

Para resolver el error 1698, cambie su contraseña de python connect a ".

Nota: actualizar manualmente la contraseña del usuario no resolverá el problema, todavía obtener el error 1698

 0
Author: Jameskchau,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-03 01:48:37

Recuerde que la contraseña debe configurarse aún más después de reiniciar mysql como se muestra a continuación

SET PASSWORD = PASSWORD('root');
 0
Author: Pravin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-30 18:23:10