El usuario de MySQL DB no tiene columnas de contraseña – Instalar MySQL en OSX

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

Lo que he hecho es a continuación.

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

FYI, usé use mysql; . Así que seleccioné la consulta en la tabla de usuario y la columna de contraseña encontrada realmente 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

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

Primero elige la base de datos:

 mysql>use mysql; 

Y luego mostrar las tablas:

 mysql>show tables; 

Encontrará la tabla de usuario, 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 ‘contraseña’, el campo de contraseña se llama ‘authentication_string’. Entonces, 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: Novedades en MySQL 5.7

Una trampa en la que caí es que ahora no hay un campo de contraseña , se ha cambiado el nombre de modo que:

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

Ahora debería ser:

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

Use el comando ALTER USER lugar de intentar actualizar una fila de USER . Tenga en cuenta que puede haber más de un usuario ‘raíz’, 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' 

Este error ocurre si no configuró la contraseña en la instalación, en este caso, el mysql que usa el complemento unix-socket .

Pero si elimina el enlace del complemento de la configuración (tabla mysql.user) tendrá otro problema. Esto no soluciona el problema y crea otro problema. Para arreglar el enlace eliminado y establecer la contraseña (“PWD”) hazlo:

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

Si no funciona, agregue la cadena skip-grant-tables en la sección [mysqld] de /etc/mysql/mysql.conf.d/mysqld.cnf . Luego haga 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 . Compruebe: mysql -u root -p .

Antes de restart elimine esa cadena del archivo mysqld.cnf, si la configura allí.

Gracias por tu ayuda. En caso de que las personas sigan teniendo problemas, intente esto.

Para MySQL versión 5.6 y bajo

¿Olvidaste tu contraseña Mac OS X ‘ROOT’ y necesitas restablecerla? Sigue estos 4 sencillos pasos:

  1. Detener el servidor mysqld. Por lo general, esto se puede hacer desde ‘Preferencias de sistema’> MySQL> ‘Detener servidor MySQL’
  2. Inicie el servidor en modo seguro con bypass 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 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. Detenga el servidor mysqld nuevamente y reinícielo en modo normal.

Para MySQL versión 5.7 y posteriores

  1. Detener 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 bypass 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 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 nuevamente y reinícielo en modo normal.

Solo funcionó conmigo cuando me “sonrojé” después de los comandos mencionados aquí. Aquí está la lista completa de comandos que utilicé:

Es posible que las respuestas anteriores no funcionen para las versiones posteriores de MySQL. Pruebe estos pasos si las respuestas anteriores no le funcionaron:

1- Haga clic en el icono de wamp> mysql> consola mysql

2- escribir los siguientes comandos, uno por uno

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

Para este problema, utilicé un método simple y grosero, cambie el nombre del campo a contraseña, la razón es que utilizo el software mac navicat premium en el error de operación visual: columna desconocida ‘contraseña’ en ‘lista de campo’, la el software usa una contraseña para que no pueda operar fácilmente. Por lo tanto, me meto en la línea de comandos de la base de datos, ejecuto

 Use mysql; 

Y luego modifique el nombre del campo:

 ALTER TABLE user CHANGE authentication_string password text; 

Después de todo normal.

Causa raíz: root no tiene contraseña, y su statement de python connect debe reflejar eso.

Para resolver el error 1698, cambie su contraseña de conexión python a ”.

nota: la actualización manual de la contraseña del usuario no resolverá el problema, igual obtendrá el error 1698

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

 SET PASSWORD = PASSWORD('root');