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


14

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 de 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?


intente comenzar mysqlen modo seguro. entonces puede cambiar la contraseña de root
— Mongrel

Para cualquiera que lea este hilo. MySQL 5.7 tiene cambios sustanciales bajo el capó. Lea acerca de ellos antes de actualizar.
— Rui F Ribeiro

Respuestas:


24

En MySQL 5.7, se eliminó el passwordcampo en el campo de mysql.usertabla, 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 un campo llamado password, el campo de la contraseña se llama authentication_string. Entonces, solo haz esto:

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

Según lo sugerido por @Rui F Ribeiro, alternativamente puede ejecutar:

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

1
+1 para la referencia de la cadena de autenticación. También me enteré recientemente después de actualizar a 5.7
— Rui F Ribeiro

44
Si bien no se dirige completamente a esta respuesta, otra alternativa para 5.7 esSET PASSWORD FOR 'root' = PASSWORD('new_password');
— Rui F Ribeiro

1
@RuiFRibeiro gracias, actualicé mi respuesta
— Rahul

1
Rahul Inicialmente edité el hilo a más de 5.7, pero luego lo cambié a MySQL 5.7, para mantener el espíritu de la pregunta. Por ejemplo, @Shivu no sabía que es un cambio en 5.7.
— Rui F Ribeiro

1
Es una forma de enmarcar la pregunta. No estamos editando preguntas y respuestas solo para beneficio del OP, sino también para otros más adelante.
— Rui F Ribeiro

2

La forma de cambiar la contraseña de MySQL es SET PASSWORD

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

consulte el Manual de referencia de MySQL 5.7 / ... / SET PASSWORD Syntax

La instrucción SET PASSWORD asigna una contraseña a una cuenta de usuario de MySQL, especificada como un texto sin cifrar (sin cifrar) o un 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 una DMLdeclaración.

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

Advertencia: esa no es la forma oficial y admitida. Puede causar problemas si no sabe lo que está haciendo. No se olvide FLUSH PRIVILEGES.

Para la mayoría de las operaciones, como crear un usuario, cambiar sus privilegios o cambiar su contraseña, querrá usar las declaraciones de alto nivel. No solo son más fáciles de usar y son compatibles con una mayor cantidad 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 MyISAM como un clúster Galera.

Dejar de usar PRIVILEGIOS FLUSH

Por favor, uso GRANT, REVOKE, SET PASSWORD, o RENAME USERy no declaraciones DML directos.

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


1

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

si puede iniciar sesión, intente esto ""no funcionará intente con ''comillas simples

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


Si bien prefiero la respuesta mysqladmin, vea la respuesta de Rahul. Su consulta SQL está desactualizada. Corregí el mysqladmin, te faltaba la directiva de contraseña.
— Rui F Ribeiro

1
Gracias Ribeiro Me perdíauthentication_string
— Mestizo

0

En mi caso

mysql.server start
$ mysql -uroot
mysql> update user set authentication_string=password('123456') where User='root';
mysql> exit;
mysql.server restart (if you not restart , connection will not work.)

Entonces, creo que su comando de actualización es correcto, pero necesita reiniciar su servidor mysql.


-1

Para este problema, utilicé un método simple y grosero, cambie el nombre del campo a contraseña, la razón de esto es que utilizo el software mac navicat premium en el error de operación visual: columna desconocida 'contraseña' en 'lista de campos', el el software en sí usa contraseña para que no pueda operar fácilmente. Por lo tanto, me dirijo 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 lo normal.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.