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 declaraciones.
$ 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 / demonio 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
Solución para el error “No se puede bloquear ibdata1” de MySQL
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 me ayudó. Descubrí que necesitaba borrar el método del complemento. En 5.6, pude 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 una cadena vacía, debería haberse predeterminado efectivamente en 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 el registro necesario en la tabla user
tiene vacio plugin
campo (puede haber, por ejemplo, "unix_socket"
).
Desde la versión 5.5.7, mysql tiene varios complementos de autenticación compatibles con https://dev.mysql.com/doc/refman/5.6/en/authentication-plugins.html
Entonces, si no está vacío plugin
campo, la contraseña se ignoraría 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.