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.
-
Inicie la instancia del servidor MySQL o el demonio con el
--skip-grant-tables
opción (configuración de seguridad).$ mysqld --skip-grant-tables
-
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';
-
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.