¿Cómo cambiar la contraseña 'root' de MySQL usando MySQL v5.7?

¿Cómo cambiar la contraseña 'root' de MySQL usando MySQL v5.7?

Entorno actual:

mysql> show variables like "%version%";
+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| innodb_version          | 5.7.13                       |
| protocol_version        | 10                           |
| slave_type_conversions  |                              |
| tls_version             | TLSv1,TLSv1.1                |
| version                 | 5.7.13                       |
| version_comment         | MySQL Community Server (GPL) |
| version_compile_machine | x86_64                       |
| version_compile_os      | Linux                        |
+-------------------------+------------------------------+
8 rows in set (0.01 sec)

Usuario del comando de cambio de contraseña:

mysql> update user set password=PASSWORD("XXXX") where user="root";
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

¿Me estoy perdiendo de algo?

Respuesta1

En MySQL 5.7, el passwordcampo en mysql.userel campo de la tabla se eliminó, ahora el nombre del campo es authentication_string.

Primero elija la base de datos:

mysql> use mysql;

Y luego muestra las tablas:

mysql> show tables;

Encontrará la usertabla y verá sus campos:

mysql> describe user;

Te darás cuenta de que no hay ningún campo con nombre password, sino el campo de contraseña authentication_string. Entonces, solo haz esto:

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

Como lo sugiere @Rui F Ribeiro, alternativamente puedes ejecutar:

mysql> SET PASSWORD FOR 'root' = PASSWORD('new_password');

Respuesta2

La forma MySQL de cambiar la contraseña esSET PASSWORD

SET PASSWORD FOR 'root' = PASSWORD('new_password');

verMySQL 5.7 Manual de referencia / ... / SET PASSWORD Sintaxis

La instrucción SET PASSWORD asigna una contraseña a una cuenta de usuario de MySQL, especificada como texto sin cifrar (sin cifrar) o como valor cifrado:

'auth_string' represents a cleartext password.

'hash_string' represents an encrypted password.

La respuesta aceptada de Rahul muestra cómo actualizar la contraseña con DMLuna declaración.

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

Advertencia: esa no es la forma oficial y compatible. Puede causar problemas si no sabes lo que estás haciendo. No lo olvides FLUSH PRIVILEGES.

Para la mayoría de las operaciones, como crear un usuario, cambiar sus privilegios o cambiar su contraseña, querrá utilizar declaraciones de alto nivel. No sólo son más fáciles de usar y compatibles con un mayor número de versiones de MySQL, sino que también evitarán que cometas errores (por supuesto, recuerda configurar el modo SQL “NO_AUTO_CREATE_USER“). Incluso suelen funcionar bien en un entorno hostil a MyISAM como un clúster de Galera.

Dejar de usar FLUSH PRIVILEGES

Utilice GRANT, REVOKE, SET PASSWORDo RENAME USERy no declaraciones DML directas.

Actualización: SET PASSWORD ... = PASSWORD('auth_string') la sintaxis esobsoleto a partir de MySQL 5.7.6y se eliminará en una versión futura de MySQL.

Respuesta3

mysqladmin -u user-name password -p "oldpassword" "newpass"

Si puedes iniciar sesión, prueba con esto, ""no funcionará, prueba con ''comillas simples.

update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';

Respuesta4

Para este problema, utilicé un método simple y grosero, cambiar 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', la El software en sí utiliza una contraseña, por lo que no puedo operarlo fácilmente. Por lo tanto, accedo a la línea de comando 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.

información relacionada