Cómo encontrar la contraseña de root de MySQL

167

No puedo entender mi contraseña de root de MySQL; ¿Cómo puedo averiguar esto? ¿Hay algún archivo donde se almacena esta contraseña?

Estoy siguiendo este enlace pero no tengo el directorio directadmin en local.

Om3ga
fuente
Encontrado por una simple Búsqueda de Google: dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
Arran
11
la contraseña predeterminada de root es - espere - "root" (sin las comillas), o no tiene contraseña (y ese servidor mysql es realmente suyo)
Nikola Bogdanović
sí, es mi servidor mysql local en mi computadora portátil
Om3ga
Entonces, ¿alguien acaba de pasar esta pregunta y volcó un voto negativo en cada respuesta correcta y relevante ?
lanzz

Respuestas:

142

Gracias a @thusharaK pude restablecer la contraseña de root sin conocer la contraseña anterior.

En ubuntu hice lo siguiente:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking

Luego ejecute mysql en una nueva terminal:

mysql -u root

Y ejecute las siguientes consultas para cambiar la contraseña:

UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';
FLUSH PRIVILEGES;

En MySQL 5.7, se eliminó el campo de contraseña en el campo de tabla mysql.user, ahora el nombre del campo es 'autenticación_cadena'.

Salga del modo seguro mysql e inicie el servicio mysql:

mysqladmin shutdown
sudo service mysql start
eeezyy
fuente
24
Tuve que usar mysqladmin -u root -p shutdown, con la nueva contraseña.
SL Barth - Restablecer Monica
2
Buen flujo de instrucciones especialmente: luego ejecute mysql en una nueva terminal
Mohammed Subhi Sheikh Quroush
8
No puedo hacer esto mysql -u root. Muestra errorAccess denied
Avinash Raj
44
@AvinashRaj: Prueba esto: sudo mysql -u root
Allen Gingrich
Increíble. Comprendo lo que funcionó en RHEL 7: Terminal 1: servicio sudo mysql stop sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking Terminal 2: mysql -u root ACTUALIZACIÓN mysql.user SET Password = CONTRASEÑA ('nueva contraseña') DONDE Usuario = 'root'; ENJUAGUE PRIVILEGIOS; mysqladmin -u root -p shutdown Nota: Una vez que cierre mysqladmin, verá las salidas de modo seguro en la Terminal 1. sudo service mysql start ¡Eso es todo y funciona de maravilla con la nueva contraseña!
Usuario de StackOverFlow
65

No puede ver la contraseña hash; ¡lo único que puedes hacer es reiniciarlo!

Detener MySQL:

sudo service mysql stop

o

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

Comience 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 contraseña:

$ mysql -u root

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

MySQL 5.7 y superior:

mysql> use mysql; 
mysql> update user set authentication_string=password('password') where user='root'; 

Inicie MySQL:

sudo mysql start

o

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

Su nueva contraseña es 'contraseña'.

tk_
fuente
sudo /usr/local/mysql/support-files/mysql.server stop sudo: /usr/local/mysql/support-files/mysql.server: comando no encontrado
Isuru
¿Qué hacer en este caso?
Isuru
Parece que mysql no está instalado correctamente. Desinstale correctamente y vuelva a instalar.
tk_
Muchas gracias. Algo salió extraño con mi mysql_secure_installationy root ya no estaba cooperando. ¿Qué hace la authentication_stringconfiguración?
será
3
Para reiniciar, intente mysqladmin -u root -p shutdowncon la nueva contraseña entoncessudo service mysql start
forumulator
37

MySQL 5.7 y superior guarda la raíz en el archivo de registro de MySQL.

Por favor intente esto:

sudo grep 'temporary password' /var/log/mysqld.log
Vlad
fuente
En mi caso, la contraseña no estaba aquí; sin embargo, en cambio, /var/log/mysql/error.logcontenía una advertencia sobre que la contraseña de root estaba vacía, así que esto me salvó el día :)
Janaka Bandara
19

Una cosa que me hizo tropezar en una nueva instalación de mySQL y me pregunto por qué no pude hacer funcionar la contraseña predeterminada y por qué incluso los métodos de restablecimiento no funcionaban. Resulta que en Ubuntu 18 la versión más reciente del servidor mysql no usa autenticación de contraseña para el usuario root de forma predeterminada. Esto significa que no importa en qué lo configures, no te permitirá usarlo. espera que inicies sesión desde un socket privilegiado. entonces

mysql -u root -p

¡no funcionará en absoluto, incluso si está utilizando la contraseña correcta! negará el acceso sin importar lo que ingrese.

En cambio, necesitas usar

sudo mysql

eso funcionará sin ninguna contraseña. entonces una vez en que necesita escribir

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password you want to use';

luego cierre sesión y ahora lo sangriento finalmente aceptará su contraseña

Kit Ramos
fuente
14

Siga estos pasos para restablecer la contraseña en el sistema Windows

  1. Detener el servicio Mysql desde el administrador de tareas

  2. Cree un archivo de texto y pegue la siguiente declaración

MySQL 5.7.5 y anterior:

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


MySQL 5.7.6 y posterior:

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

  1. Guardar como mysql-init.txty colocarlo en 'C' drive.

  2. Abra el símbolo del sistema y pegue lo siguiente

C:\> mysqld --init-file=C:\\mysql-init.txt

Lokesh kumar Chippada
fuente
2
Esto fue un salvavidas, un gran consejo!
Nicholas Kreidberg
Trabajó en Centos7 mysqld --init-file=/root/m.txt. Agregué el comando anterior SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');a /root/m.txt
Damodar Bashyal el
8

A menos que el administrador de paquetes le solicite que escriba la contraseña de root durante la instalación, la contraseña de root predeterminada es la cadena vacía. Para conectarse al servidor recién instalado, escriba:

shell> mysql -u root --password=
mysql>

Para cambiar la contraseña, recupere el shell de Unix y escriba:

shell> mysqladmin -u root --password= password root

La nueva contraseña es 'root'. Ahora conéctese al servidor:

shell> mysql -u root --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Vaya, la contraseña ha cambiado. Use el nuevo root:

shell> mysql -u root --password=root
...
blah, blah, blah : mysql welcome banner
...
mysql> 

¡Bingo! Nuevo haz algo interesante

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

Maurycy

mszmurlo
fuente
1
no está usando contraseñas sino sockets autenticados por defecto ahora. así que solo cambiar la contraseña ya no es suficiente.
Kit Ramos el
7

Además de las otras respuestas, en una instalación de cpanel, la contraseña raíz de mysql se almacena en un archivo llamado /root/.my.cnf. (y el servicio cpanel lo restablece al cambiar, por lo que las otras respuestas aquí no ayudarán)

Ohad Cohen
fuente
6

puede ver la contraseña de root de mysql, bueno, lo he probado en mysql 5.5, así que no sé si otra versión nueva funciona bien o no

nano ~/.my.cnf
usuario889030
fuente
4

Esto funcionó para mí:

En terminal escriba lo siguiente

$ sudo mysql -u root -p

Introducir la contraseña:// solo presione enter

mysql>

Ligero
fuente
parece que el servidor mysql ya no usa la autenticación de contraseña por defecto. debe iniciar el cliente mysql como superusuario (sudo) para obtener acceso hasta que cambie el método de inicio de sesión.
Kit Ramos el
4

La contraseña predeterminada que funcionó para mí después de la instalación inmediata del servidor mysql es: mysql

Deepak Chaudhry
fuente
2
tal vez no respondió la pregunta, pero muchas personas que vienen aquí pueden encontrar que resuelve su problema.
Ohad Cohen
3

El procedimiento cambia según la versión de MySql. Siga el procedimiento exactamente como se describe para su versión:

  • CONSEJOS: lea antes de la página de instrucciones para su versión de MySql *

  • En el paso 5: en lugar de ejecutar CMD, cree un acceso directo en su escritorio llamando a CDM.exe. Luego haga clic derecho en el acceso directo y seleccione "Ejecutar como administrador".

  • En el paso 6: omita la primera versión propuesta del comando y ejecute la segunda, la que tiene el parámetro --defaults-file

  • Una vez que ejecuta el comando, si todo está bien, la ventana CMD permanece abierta y el comando del paso 6 continúa ejecutándose. Simplemente cierre la ventana (haga clic en 'x'), y luego fuerce el cierre de MySQl desde el Administrador de tareas.

  • Elimine el archivo con los comandos SQL y comience nuevamente MySQL. La contraseña debe cambiarse ahora.

5.0 http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

5.1 http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html

... solo cambia la versión en el enlace (5.5, 5.6, 5.7)

JuanCamilo
fuente
3

En su archivo .err "hostname" dentro de la carpeta de datos en la que trabaja MySQL, intente buscar una cadena que comience con:

"Se genera una contraseña temporal para roor @ localhost"

puedes usar

less /mysql/data/dir/hostname.err 

luego barra diagonal seguida de la cadena que desea buscar

/"A temporary password"

Luego presione n, para ir al siguiente resultado.

nDCasT
fuente
0

Sistema:

  • CentOS Linux 7
  • mysql Ver 14.14 Distrib 5.7.25

Procedimiento:

  1. Abra dos sesiones de shell, inicie sesión en una como usuario root de Linux y en la otra como usuario no root con acceso al mysqlcomando.

  2. En su sesión raíz, detenga el oyente mysqld normal e inicie un oyente que omita la autenticación de contraseña ( nota: esto es un riesgo de seguridad significativo ya que cualquier persona con acceso al mysql comando puede acceder a sus bases de datos sin una contraseña. Es posible que desee cerrar sesiones activas de shell y / o deshabilitar el acceso de shell antes de hacer esto):

    # systemctl stop mysqld
    # /usr/sbin/mysqld --skip-grant-tables -u mysql &

  3. En su sesión no root, inicie sesión en mysql y configure la contraseña de root de mysql:

    $ mysql
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    Query OK, 0 rows affected, 1 warning (0.01 sec)

    mysql> quit;

  4. En su sesión raíz, elimine la instancia sin contraseña de mysqld y restaure el oyente mysqld normal al servicio:

    # kill %1
    # systemctl start mysqld

  5. En su sesión no root, pruebe la nueva contraseña de root que configuró anteriormente:

    $ mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    ...
    mysql>

LECTURA DE CÓDIGO
fuente
-2

Resolví esto de una manera diferente, esto puede ser más fácil para algunos.

Lo hice de esta manera porque intenté iniciar en modo seguro pero no puedo conectarme con el error: ERROR 2002 (HY000): No puedo conectarme al servidor MySQL local a través del socket '/var/run/mysqld/mysqld.sock' (2)

Lo que hice fue conectarme normalmente como root:

$ sudo mysql -u root

Luego creé un nuevo superusuario:

mysql> grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
mysql> quit

Luego inicie sesión como myuser

$ mysql -u myuser -p -h localhost

Intentar cambiar la contraseña no me dio errores, pero no hizo nada por mí, así que solté y volví a crear el usuario root

mysql> drop user 'root'@'localhost;
mysql> mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'mypassword' with grant option;

El usuario root ahora está trabajando con la nueva contraseña

Trevorbest
fuente
-5

Vaya a phpMyAdmin> config.inc.php> $ cfg ['Servidores'] [$ i] ['contraseña'] = '';

usuario3288185
fuente
1
No hay nada en la pregunta sobre phpmyadmin.
Marqués de Lorne