Saltar al contenido

mysql cómo reparar el acceso denegado para el usuario ‘root’ @ ‘localhost’

Nuestros desarrolladores estrellas agotaron sus reservas de café, en su búsqueda diariamente por la solución, hasta que Miriam halló el resultado en Gitea por lo tanto hoy la comparte con nosotros.

Solución:

Siga los pasos a continuación.

  1. Inicie la instancia del servidor MySQL o el demonio con el --skip-grant-tables opción (configuración de seguridad).

    $ mysqld --skip-grant-tables
    
  2. Ejecute estas sentencias.

    $ mysql -u root mysql
    $mysql> UPDATE user SET Password=PASSWORD('my_password') where USER='root';
    $mysql> FLUSH PRIVILEGES;
    

Si se encuentra con el campo desconocido Error de contraseña anterior, use:

update user set authentication_string=password('my_password') where user='root';
  1. Finalmente, reinicie la instancia/daemon sin el --skip-grant-tables opción.

    $ /etc/init.d/mysql restart
    

Ahora debería poder conectarse con su nueva contraseña.

$ mysql -u root -p

Introducir la contraseña: my_password

Arreglo para el error MySQL “No se puede bloquear ibdata1”

sudo mv /usr/local/mysql/data/ibdata1 /usr/local/mysql/data/ibdata1.bak
sudo mv /usr/local/mysql/data/ib_logfile0 /usr/local/mysql/data/ib_logfile0.bak
sudo mv /usr/local/mysql/data/ib_logfile1 /usr/local/mysql/data/ib_logfile1.bak
sudo cp -a /usr/local/mysql/data/ibdata1.bak /usr/local/mysql/data/ibdata1
sudo cp -a /usr/local/mysql/data/ib_logfile0.bak /usr/local/mysql/data/ib_logfile0
sudo cp -a /usr/local/mysql/data/ib_logfile1.bak /usr/local/mysql/data/ib_logfile1
sudo /etc/init.d/mysql restart

Ninguno de los anteriores fue útil para mí. Descubrí que necesitaba borrar el método del complemento. En 5.6, podría hacer:

sudo mysql -u root
use mysql;
[mysql] update user set plugin='' where User='root';
[mysql] flush privileges;

En 5.7, descubrí que necesitaba:

sudo mysql -u root
use mysql;
[mysql] update user set plugin='mysql_native_password' where User='root';
[mysql] flush privileges;

De acuerdo con los documentos, con el complemento configurado en un vacío string, debería haberse predeterminado mysql_native_password, pero puede confundirse con un hash de contraseña vacío. Para obtener más matices, puede leer la documentación aquí: https://dev.mysql.com/doc/refman/5.7/en/native-authentication-plugin.html

También asegúrese de que se necesita el registro en la tabla user tiene vacío plugin campo (puede haber, por ejemplo, "unix_socket").

Desde la versión 5.5.7, mysql admite varios complementos de autenticación https://dev.mysql.com/doc/refman/5.6/en/authentication-plugins.html

Entonces, si no tiene vacío plugin entonces la contraseña sería ignorada y habría una advertencia en el registro de errores de mysql (para mí es /var/log/mysql/error.log):

[Warning] 'user' entry '[email protected]' has both a password and an authentication plugin specified. The password will be ignored.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *