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?

usuario3310572
fuente
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%";
Hellboy
fuente
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.

Govind Rai
fuente
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');
Vijay Kumar
fuente
6

esta es la respuesta actualizada para WAMP v3.0.6

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

FLUSH PRIVILEGES;
Robert Anthony S. Tribiana
fuente
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';"
David Silva Smith
fuente
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.

Napoleano
fuente
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';
Kirti Nikam
fuente
0

A partir de MySQL 8.0.18 Esto funciona bien para mí

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

mykoman
fuente
-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.

user353gre3
fuente
1
No funciona. Devolución de error de sintaxis cerca de un token inesperado ('
user3310572