Cambio de contraseña de root de MySQL

95

He intentado restablecer mi contraseña de root de MySQL. Ejecuté mysqld_safe --skip-grant-tables, actualicé la contraseña de root y verifiqué la tabla de usuarios para asegurarme de que esté allí. Una vez que reinicié el demonio mysql, intenté iniciar sesión con la nueva contraseña de root que acabo de establecer y todavía obtengo acceso denegado por errores de usuario 'root'. También intenté eliminar y reinstalar mysql por completo (incluida la eliminación del archivo my.cnf) y todavía no tuve suerte. ¿Alguien tiene alguna sugerencia sobre lo que puedo hacer a continuación?

Gracias por adelantado

mella
fuente
2
por favor publique su error real
Vishwanath Dalvi
16
Si no está bloqueado SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somepassword'); es más seguro.
sabgenton
Seguí los pasos en el video para cambiar la contraseña en uno de mis servidores youtu.be/gFo5DV_pSg8
Prem
1
Versión del servidor: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) ERROR 1064 (42000): Tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de 'PASSWORD ("1")' en la línea 1 SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ("alguna contraseña");
discipleartem

Respuestas:

124

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypass');

kta
fuente
7
Esto me funciona en 5.7, mientras que la respuesta aceptada no lo es.
Stoopkid
2
Esta es la solución correcta si su contraseña de root de MySQL está en blanco.
fschuindt
3
> ACTUALIZAR mysql.user SET authentication_string = PASSWORD ('MyNewPass') DONDE usuario = 'root'; > PRIVILEGIOS DE FLUSH; En MySQL versión 5.7.x no hay más campos de contraseña en la tabla mysql. Fue reemplazado por authentication_string.
Robert Anthony S. Tribiana
2
Esto me da permiso, pero en realidad no hagas nada
Freedo
1
Necesita un comando adicional FLUSH PRIVILEGESpara hacer efectivo el cambio sin reiniciar el servidor de la base de datos.
NetVicious
60

eche un vistazo a esto del manual de referencia de MySQL:

Primer inicio de sesión en mysql:

# mysql -u root -p

Luego, en el indicador de mysql, ejecute:

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

Luego

FLUSH PRIVILEGES;

Consulte esta página para obtener más información: Restablecimiento de la contraseña raíz: sistemas Unix

VSB
fuente
Recibí un error "Estás usando el modo de actualización seguro e intentaste actualizar una tabla sin un DÓNDE que usa una columna CLAVE ..." al actualizar la contraseña del usuario. Consulte stackoverflow.com/questions/11448068/… para saber cómo solucionar este error.
Joe Borysko
ERROR 1064 (42000): Tiene un error en su sintaxis SQL; Consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de '(' MyNewPass ') WHERE User =' root '' en la línea 1
discipleartem
28
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Puede encontrar Restablecimiento de la contraseña raíz en la documentación de MySQL.

iamfaith
fuente
Esta consulta me funcionó, pero la nueva contraseña no funciona (acceso denegado). Solo comienza a funcionar después de que recreé al usuario root askubuntu.com/a/784347/160368 .
hlcs
1
funciona para mí en MySQL 8.0.20 y después de inicializar la carpeta de datos con este comandomysqld --initialize --console
A. Henteti
27

Esta es la respuesta actualizada para WAMP v3.0.6 y posteriores

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

> FLUSH PRIVILEGES;

En MySQL versión 5.7.x no hay más campos de contraseña en la tabla mysql. Fue reemplazado por authentication_string. (Esto es para el terminal / CLI)

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

FLUSH PRIVILEGES;

(Esto es para PHPMyAdmin o cualquier GUI de Mysql)

Robert Anthony S. Tribiana
fuente
Esta respuesta es una de las pocas que dice que la mysql.usertabla debería actualizarse. Tenga en cuenta que si está utilizando cualquier otra base de datos (establecida por el usecomando), obtendrá un error de que la tabla userno existe. ¡Gracias Señor!
Aleksandar
1
funciona para mi . Estoy usando 5.7.x, no hay mysql.usertabla. otras respuestas están desactualizadas
Siwei Shen 申思维
¡¡Feliz de ayudar!!
Robert Anthony S. Tribiana
Lo revierto porque es mi intención usar> debido al punto y coma por línea que está destinado a la terminal
Robert Anthony S. Tribiana
0 filas afectadas, filas coincidentes: 3 modificadas: 0 ...?
Trainoasis
22

¡Lo encontré! Olvidé escribir la contraseña cuando la cambié. Usé esta consulta para resolver mi problema:

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

Olvidé el PASSWORD('NEW PASSWORD')y solo puse la nueva contraseña en texto sin formato

mella
fuente
asegúrese de regresar y aceptar su respuesta para permitir que otros vean la solución
ghostJago
1
dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html muestra cómo hacer esto --init-file=si estás atento.
sabgenton
3
¿Alguna idea de por qué cuando uso el mismo comando, se devuelve el siguiente error? Error 1054 (42S22): columna desconocida 'Contraseña' en 'lista de campos'
Adrian M.
1
Tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de '(' NEW PASSWORD ') donde user =' root '' en la línea 1
discipleartem
20

Siga los pasos a continuación.

paso 1. detener mysql

paso 2. sudo mysqld_safe --skip-grant-tables

paso 3.mysql -u root

paso 4.use mysql;

paso 5.show tables;

paso 6.describe user;

paso 7.update user set authentication_string=password('1111') where user='root';

iniciar sesión con contraseña 1111

Lokesh G
fuente
3
flush privilegeses importante como último paso.
Khom Nazid
Realmente se hace con el culo. Hice todos los tutoriales para restablecer la contraseña. Todo funciona excepto cuando inicio sesión con la nueva contraseña, no funciona.
Shidomaru NeveRage
si mysqld no se está iniciando y un mensaje como este demonio mysqld con bases de datos de / var / lib / mysql mysqld_safe mysqld desde el archivo pid /var/run/mysqld/mysqld.pid terminó, haga esto: mkdir / var / run / mysqld chomod 777 / var / ejecutar / mysqld y comenzar todo desde la mendicidad
jokermt235
18

También busqué y probablemente algunas respuestas se ajusten a algunas situaciones,

mi situación es Mysql 5.7 en un sistema Ubuntu 18.04.2 LTS:

(obtenga privilegios de root)

$ sudo bash

(configure la contraseña para el usuario raíz de la base de datos + implemente la seguridad en pasos)

# mysql_secure_installation

(dar acceso al usuario root a través de contraseña en lugar de socket)

(+ editar: ¿aparentemente necesitas establecer la contraseña de nuevo?)

(¡¡¡no lo configure en 'mySecretPassword' !!!)

# mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> set password for 'root'@'localhost' = PASSWORD('mySecretPassword'); 
mysql> FLUSH PRIVILEGES;
mysql> exit;

# service mysql restart

Muchas gracias a zetacu (y erich ) por esta excelente respuesta (después de buscar un par de horas ...)

Disfruta :-D

S.

Bamboomy
fuente
Esta es la mejor respuesta hasta ahora, al menos para el servidor mysql 5.7.
Zoltán Hajdú
La MEJOR respuesta. Gracias.
Luciano Fantuzzi
11

En MySQL 8.0.4+

Para actualizar el usuario root actual:

select current_user();
set password = 'new_password';

Para actualizar a otro usuario:

set password for 'otherUser'@'localhost' = 'new_password';

Para establecer la política de contraseñas antes de actualizar la contraseña:

set global validate_password.policy = 0;
set password = 'new_password';
set password for 'otherUser'@'localhost' = 'new_password';

Otra / mejor forma de actualizar la contraseña de root:

mysql_secure_installation

¿Quiere seguir con la autenticación 5.x para poder seguir utilizando aplicaciones heredadas?

En my.cnf

default_authentication_plugin = mysql_native_password

Para actualizar la raíz:

set global validate_password.policy = 0;
alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';
Carlito
fuente
7

Esto funcionó para mí

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

https://dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/resetting-permissions-windows.html

LV98
fuente
ERROR 1064 (42000): Tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de 'IDENTIFICADO POR' MyNewPass '' en la línea 1
trainoasis
Acabo de copiar el exacto en sql a través de CLI: o
trainoasis
Por supuesto, sshed a mi servidor + mysql -u root -p para llegar a la cli de mysql
trainoasis
6

¡Tienes que restablecer la contraseña! pasos para mac osx (probado y funcionando) y ubuntu

Detener MySQL

$ sudo /usr/local/mysql/support-files/mysql.server stop

Inícielo en modo seguro:

$ sudo mysqld_safe --skip-grant-tables

(la línea de arriba es el comando completo)

Este será un comando continuo hasta que finalice el proceso, así que abra otra ventana de shell / terminal, inicie sesión sin una contraseña:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

Inicie MySQL

sudo /usr/local/mysql/support-files/mysql.server start

su nueva contraseña es 'contraseña'.

tk_
fuente
Tengo un mensaje: no se seleccionó ninguna base de datos
Mimouni
@Mimouni prueba esto: stackoverflow.com/questions/21944936/…
tk_
5

Para MySQL 5.7.6 y posterior:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Para MySQL 5.7.5 y anteriores:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
Ojo de águila
fuente
3

Para la última versión actual de mysql (8.0.16), ninguna de estas respuestas funcionó para mí.

Después de mirar varias respuestas diferentes y combinarlas, esto es lo que terminé usando que funcionó:

update user set authentication_string='test' where user='root';

Espero que esto ayude.

Suhas
fuente
2

un error común con el que me encuentro de vez en cuando es que olvido la -popción, así que ¿estás seguro de que usaste:

mysql -u root -p
Marian Theisen
fuente
2

En MySQL 5.7, la contraseña se reemplaza por 'authentication_string'.

utilizar

update user set authentication_string=password('myfavpassword') where user='root';
Kamal Reddy
fuente
2

Usando la utilidad de línea de comandos mysqladmin para modificar la contraseña de MySQL:

mysqladmin --user=root --password=oldpassword password "newpassword"

Fuente

Darush
fuente
1

Probé la respuesta de @kta pero no funcionó para mí.

Estoy usando MySQL 8.0

Esto funcionó para mí:

mysql> SET PASSWORD FOR 'root'@'localhost' = 'yourpassword'

escalera de cadena
fuente
1
Agregue una explicación a su código: ¿cómo resuelve esto exactamente una pregunta de siete años?
Nico Haase
Parece que la sintaxis ha cambiado durante los siete años. No es envolver la contraseña con la contraseña () dev.mysql.com/doc/refman/8.0/en/set-password.html
kangkyu
El hash de la contraseña debe ser un número hexadecimal de 41 dígitos
Mimouni
1

Tantos comentarios, pero me ayudó este método:

sudo mysqladmin -u root password 'my password'

En mi caso, después de la instalación, obtuve el servicio mysql sin una contraseña para el usuario root, y necesitaba establecer la contraseña para mi seguridad.

Konstantin Romanovsky
fuente
Podría usarse para restablecer la contraseña de usuario root de mysql sin conocer la anterior. Pero asegúrese de que nadie tenga acceso a su syslog, ya que esta contraseña está registrada:Aug 07 16:21:55 ubuntupc sudo[93250]: user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/mysqladmin -u root password 'my password'
Gryu
0

detenga todos los servicios de wamp, salga de wamp.

abra el bloc de notas y luego escriba> SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ('');

luego guárdelo en c: drive con cualquier nombre ... como este "c: /example.txt"

ahora ve a tu "wamp" falder wamp> bin> mysql> mysql (tu versión)> bin en mi caso la ruta es "C: \ wamp \ bin \ mysql \ mysql5.6.17 \ bin"

ahora copie su ruta y luego ejecute cmd con (ctrl + r) luego escriba "cmd" (enter)

escriba cd luego haga clic derecho en cmd y pegue la ruta (ingresar) ahora escriba (mysqld --init-file = C: \ example.txt) sin llaves y luego (ingresar)

luego reinicie la PC o abra taskmgr y elimine mysqld.exe

inicie wamp y su contraseña será eliminada ...

MohitGhodasara
fuente
0

Para los usuarios de MacOS, si olvidas tu contraseña de root, la respuesta de @ ThusharaK ( https://stackoverflow.com/a/28601069/5628856 ) es buena, pero hay algunos trucos más:

Si está utilizando la preferencia del sistema para iniciar mysql en el servidor, simplemente

sudo mysqld_safe --skip-grant-tables

puede que no funcione para usted.

Debe asegurarse de que los argumentos de la línea de comandos sean los mismos que los de la configuración de inicio del sistema.

El siguiente comando funciona para mí:

/usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so --skip-grant-tables

Puedes usar

ps aux | grep mysql

para comprobar el tuyo.

Shaofei Cheng
fuente
-1

En Ubuntu,

sudo dpkg-reconfigure mysql-server-5.5 

Reemplace 5.5con su versión actual y se le pedirá la nueva contraseña de root.

Mouneer
fuente
¿En qué sistema operativo? Esto no tiene sentido.
Khom Nazid
-1
  1. En Mac, abra las preferencias del sistema> MySQL.
  2. En la sección de configuración de MySQL, verifique la inicialización de la base de datos.
  3. cambie la contraseña en el indicador. inicializar base de datos
NNK Teja
fuente