Cambiar la contraseña de usuario de mysql usando la línea de comando


84

Estoy intentando actualizar la contraseña de un usuario de la base de datos mediante la línea de comandos y no me funciona. Este es el código que estoy usando:

mysql> UPDATE user SET password=PASSWORD($w0rdf1sh) WHERE user='tate256';

¿Alguien podría decirme qué está mal con este código?


Bueno, ¿qué pasos estás siguiendo? Simplemente ponerlo no funcionará. Si recuerdo correctamente, es un proceso y ese código.
Idris

¡Ah! ¿Recuerdas el proceso de cómo hacerlo?
user3310572

Esto es un poco más detallado y debería ser más fácil de entender innovationthought.net/2007/05/17/…
Idris

Respuestas:


115

En su código, intente incluir la contraseña entre comillas simples. Alternativamente, según la documentación de mysql, lo siguiente debería funcionar:

SET PASSWORD FOR 'jeffrey'@'localhost' = PASSWORD('cleartext password');

FLUSH PRIVILEGES;

La última línea es importante o, de lo contrario, el cambio de contraseña no tendrá efecto, lamentablemente.

EDITAR:

Hice una prueba en mi local y funcionó.

mysql>  set password for 'test' = PASSWORD('$w0rdf1sh');
Query OK, 0 rows affected (0.00 sec)

La mía es la versión 5. Puede usar el siguiente comando para determinar su versión:

SHOW VARIABLES LIKE "%version%";

4
Cuando hago eso, devuelve un error de sintaxis cerca de un token inesperado ('
user3310572

1
¿Qué versión de mysql estás usando? Recogí la sintaxis anterior de la documentación de la versión 5.0. ¿Probaste el comando que publiqué?
hellboy

Creo que estoy usando una versión 4.0 y sí, lo probé
user3310572

El comando funciona bien para mí en MySQL Ver 14.14, asegúrese de que la contraseña esté entre comillas y que se escapen las comillas en la contraseña.
Snaver

1
Extrañamente, incluso después de enjuagar, todavía no funciona para mí :-( Estoy usando Mysql5.7.18-0ubuntu0.16.04.1
coding_idiot

37

A partir de MySQL 5.7.6, utilice ALTER USER

Ejemplo:

ALTER USER 'username' IDENTIFIED BY 'password';

Porque:

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

  • SET PASSWORD ... = 'auth_string'La sintaxis no está obsoleta, pero ALTER USERahora es la declaración preferida para asignar contraseñas.


1
¿Es esto cierto incluso para interactuar con MySQL a través de PHP?
oldboy

@Anthony sí si su versión de MySQL es> = 5.7.6
Govind Rai

Soy nuevo en MySQL. que hace ALTER USER ... IDENTIFIED BY ...exactamente? ¿en qué se diferencia de UPDATE ... SET ...o INSERT INTO ...?
oldboy

1
ALTER USER ... IDENTIFIED BY ...es una declaración SQL que configura los permisos de usuario para su base de datos. UPDATEy INSERTtienen diferentes funcionalidades, que como los nombres sugieren, actualizan registros e insertan registros en tablas en su base de datos.
Govind Rai

2
da error en mariaDbERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER 'root' IDENTIFIED BY
Pavel Niedoba

14

Nota: debe iniciar sesión como usuario root

 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('your password');

6

esta es la respuesta actualizada para WAMP v3.0.6

UPDATE mysql.user 
SET authentication_string=PASSWORD('MyNewPass') 
WHERE user='root';

FLUSH PRIVILEGES;

3

Antes de MySQL 5.7.6, esto funciona desde la línea de comandos:

mysql -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$w0rdf1sh');"

No tengo una instalación de mysql para probar, pero creo que en su caso sería

mysql -e "UPDATE mysql.user SET Password=PASSWORD('$w0rdf1sh') WHERE User='tate256';"

2

En Windows 10, simplemente salga del inicio de sesión actual y ejecútelo en la línea de comando

-> mysqladmin -u root password “newpassword”

donde en lugar de root podría ser cualquier usuario.


1

Esto funciona para mi. Tengo una solución de página web MYSQL

En MySQL, ejecute las siguientes consultas:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'New_Password';

0

A partir de MySQL 8.0.18 Esto funciona bien para mí

mysql> SET PASSWORD FOR 'user'@'localhost' = 'userpassword';


-1

Su raíz de inicio de sesión debería ser /usr/local/directadmin/conf/mysql.conf. Entonces intenta seguir

UPDATE mysql.user SET password=PASSWORD('$w0rdf1sh') WHERE user='tate256' AND Host='10.10.2.30';
FLUSH PRIVILEGES;

El host es su host mysql.


1
No funciona. Devolución de error de sintaxis cerca de un token inesperado ('
user3310572
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.