No se puede restablecer la contraseña de root de MySQL, intenté todo

9

Bueno, primero aclaremos que he leído todas las preguntas de Ask Ubuntu sobre este problema y he seguido todos los pasos de los documentos oficiales:

help.ubuntu.com

dev.mysql.com

Estoy usando Ubuntu 16.04.1 LTS

Entonces, antes de que alguien sugiera algo que probablemente ya haya intentado, voy a mostrar lo que hice:

root@localhost:/# sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.

MySQL se detuvo correctamente.

root@localhost:/# sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
[1] 3316
root@localhost:/#

Aquí no sé si esto estaba funcionando o no, así que sigo los pasos de todos modos.

root@localhost:/# mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
root@localhost:/#

Parece que no funciona, ya que el servicio no se inició. Como no puedo continuar con los siguientes pasos, pruebo el otro método (purga).

Después de usar:

sudo apt-get --purge remove
sudo apt-get install

Intento el siguiente paso:

root@localhost:/# mysqladmin -u root password MyNewPassword
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
root@localhost:/#

Como esto tampoco funciona, probé otros métodos mencionados en la web mysql:

Así que mato el proceso mysql como se señala allí y luego uso

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &
[1] 5267
root@localhost:/# 2017-02-01T12:47:49.250083Z mysqld_safe Logging to syslog.
2017-02-01T12:47:49.252427Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.254765Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.257045Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

[1]+  Salida 1                mysqld_safe --init-file=/home/me/mysql-init
root@localhost:/#

Ahora es cuando me estaba quedando sin opciones, así que también pruebo otro método mencionado aquí en Ask Ubuntu:

root@localhost:/# sudo dpkg-reconfigure mysql-server-5.7
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.17, use --force if you still need to run mysql_upgrade
root@localhost:/#

Y ahora estoy realmente sin opciones, por lo que cualquier sugerencia es bienvenida.

Ilovelinux
fuente

Respuestas:

16

Tuve el mismo problema y lo resolví ejecutando esta línea:

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld

antes de ejecutar esta línea:

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &

Para mí, estos pasos funcionaron mejor.

Creo que hay una forma más limpia de hacer esto, pero para mí, fue una solución rápida y eficiente.

odradek
fuente
1
gracias, eso hizo el truco;)
Ilovelinux
Sucede en mysql 5.7. Cuando detiene el servicio mysql / var / run / mysqld se elimina y se vuelve a crear cuando inicia de nuevo el servicio.
Capy
1

No pude hacer que mysql se reinstalara sin importar lo que intenté, terminé solo necesitando intentar restablecer la contraseña.

Tuve que seguir esta ruta en Ubuntu 16.04.1 LTS. Pasé una hora o más tratando todas las otras sugerencias de la página web de MySQL para todo en lo que además de la AskUbuntu Q & A, por fin tengo trabajo con:

Nota: si bien mostró Introduzca la contraseña para el usuario root, yo no tengo la contraseña original por lo que acaba de ingresar la misma contraseña para ser utilizada como la nueva contraseña.

Nota: no había /var/log/mysqld.log solo /var/log/mysql/error.log.

También tenga en cuenta que esto no funcionó para mí:
sudo dpkg-reconfigure mysql-server-5.7

tampoco lo hizo:
sudo dpkg-reconfigure --force mysql-server-5.5

Crear el directorio de servicio MySQL.
sudo mkdir /var/run/mysqld

Otorgue permiso al usuario de MySQL para escribir en el directorio de servicios.
sudo chown mysql: /var/run/mysqld

Entonces:

  1. matar al actual mysqld pid
  2. ejecutar mysqld con sudo / usr / sbin / mysqld &
  3. ejecutar / usr / bin / mysql_secure_installation

    Salida de mysql_secure_installation

    root @ myServer: ~ # / usr / bin / mysql_secure_installation

    Asegurar la implementación del servidor MySQL.

    Ingrese la contraseña para el usuario root:

    VALIDAR CONTRASEÑA PLUGIN puede usarse para probar contraseñas y mejorar la seguridad. Comprueba la seguridad de la contraseña y permite a los usuarios establecer solo aquellas contraseñas que sean lo suficientemente seguras. ¿Desea configurar el complemento VALIDATE PASSWORD?

    Presione y | Y para Sí, cualquier otra tecla para No: no Uso de la contraseña existente para root. ¿Cambiar la contraseña de root? ((Presione y | Y para Sí, cualquier otra tecla para No): y

    Nueva contraseña:

    Vuelva a ingresar la nueva contraseña: de manera predeterminada, una instalación de MySQL tiene un usuario anónimo, lo que permite que cualquiera pueda iniciar sesión en MySQL sin tener que tener una cuenta de usuario creada para ellos. Esto está destinado solo para pruebas y para hacer que la instalación sea un poco más suave. Debe eliminarlos antes de pasar a un entorno de producción.

    ¿Eliminar usuarios anónimos? (Presione y | Y para Sí, cualquier otra tecla para No): y Éxito.

    Normalmente, solo se debe permitir que root se conecte desde 'localhost'. Esto garantiza que alguien no pueda adivinar la contraseña de root de la red.

    ¿No permitir el inicio de sesión root de forma remota? (Presione y | Y para Sí, cualquier otra tecla para No): y Éxito.

    Por defecto, MySQL viene con una base de datos llamada 'prueba' a la que cualquiera puede acceder. Esto también está destinado solo para pruebas y debe eliminarse antes de pasar a un entorno de producción.

    ¿Eliminar la base de datos de prueba y acceder a ella? (Presione y | Y para Sí, cualquier otra tecla para No): y

    • Caída de la base de datos de prueba ... Éxito.

    • Eliminando privilegios en la base de datos de prueba ... Éxito.

    La recarga de las tablas de privilegios garantizará que todos los cambios realizados hasta ahora surtan efecto de inmediato.

    ¿Recargar tablas de privilegios ahora? (Presione y | Y para Sí, cualquier otra tecla para No): y Éxito.

    ¡Todo listo!

JGlass
fuente
0

Tuve el mismo problema y lo resolví con:

# /etc/init.d/mysql stop
# service mysql stop
# mkdir -p /var/run/mysqld
# chown mysql:mysql /var/run/mysqld
# mysqld_safe --skip-grant-tables &
# mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=password('1234') where user='root';

(Aquí, authentication_stringcontiene el campo de contraseña).

Rajani
fuente