Ubuntu 15.10 mysql error 1524 - unix_socket

51

En Ubuntu 15.10, en un momento (tal vez después de una instalación y eliminación de mariadb) mysql no pudo funcionar. Las tareas están activas, pero el servidor está inactivo.

A la orden:

mysql -u root -p

El sistema responde con un:

mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"

No hay forma de iniciar sesión, no se encuentra ningún complemento, no hay errores en los archivos de configuración (todo por defecto).

¿Cómo recuperar el control y ejecutar el servidor mysql?

Hydra Starmaster
fuente
No estoy familiarizado con este error en particular, pero vea esta discusión: lists.launchpad.net/maria-developers/msg08177.html
Jos
@Jos: esa discusión, tal vez para una situación similar, no ofrece una solución. He buscado mucho en Google, pero no he encontrado una solución completa expuesta. De todos modos, he publicado una respuesta de trabajo.
Hydra Starmaster
Acerca del motivo del mensaje de error: el complemento unix_socket es parte de MariaDB (no MySQL) y debe cargarse para que las subvenciones lo utilicen: mariadb.com/kb/en/library/authentication-plugin-unix-socket
JonnyJD

Respuestas:

94

El "unix_socket" ha sido llamado por el proceso de autenticación mysql (tal vez relacionado con una migración parcial de la base de datos a mariadb, ahora eliminada). Para que todo vuelva a funcionar, vaya a:

sudo su

luego sigue:

/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -uroot

Esto detendrá completamente mysql, omitirá la autenticación del usuario (no se necesita contraseña) y se conectará a mysql con el usuario "root".

Ahora, en la consola de mysql, vaya a usar la base de datos administrativa mysql:

use mysql;

Para restablecer la contraseña de root a mynewpassword (cámbiela a su gusto ), solo para estar seguro:

update user set password=PASSWORD("mynewpassword") where User='root';

Y este sobrescribirá el método de autenticación, eliminará la solicitud unix_socket (y todo lo demás), restaurando un método de contraseña normal y funcional:

update user set plugin="mysql_native_password";

Salga de la consola mysql:

quit;

Pare e inicie todo lo relacionado con mysql:

/etc/init.d/mysql stop
kill -9 $(pgrep mysql)
/etc/init.d/mysql start

No te olvides exitdel modo su.

Ahora el servidor mySQL está en funcionamiento. Puede iniciar sesión con root:

mysql -u root -p

o lo que quieras El uso de la contraseña está operativo.

Eso es.

Hydra Starmaster
fuente
Mi mysqld_safeno tiene otra opción como ... --skip-grant-tables¿qué da?
heemayl
Estoy en mysqld 5.6.27-0ubuntu1. Debería encontrar esa opción mirando:mysqld --verbose --help
Hydra Starmaster
2
Esto me puso en marcha. Con algunas diferencias en lugar de las mysqld_safecuales se quejaban, el argumento --skip-grant-tables no existía que usé mysqld. Sin embargo, seguía quejándose de que no podía crear los archivos de socket /var/run/mysqld/. Revisé la configuración de apparmor y tenía los permisos adecuados. Para solucionar este problema que tenía que mkdir /var/run/mysqld/y luego dar permisos completamente abiertos: chmod -R 777 /var/run/mysqld/. Entonces finalmente podría iniciar el demonio y cambiar el complemento a 'mysql_native_password'.
dennmat
1
Mi tabla de usuario no tiene campo de contraseña (Ubuntu 16 mysql 5.7.13). Usé este SQL: ACTUALIZAR mysql.user SET authentication_string = PASSWORD ('foobar123'), password_expired = 'N' WHERE Usuario = 'root' Y Host = 'localhost';
Anthony Scaife
Las instrucciones aquí son concisas y me ayudaron a resolver el problema. ¡Gracias!
Eduardo B.
11

Aquí están mis pasos para hacer esto:

/etc/init.d/mysql stop
sudo killall mysqld_safe
sudo killall mysqld
sudo mysqld_safe --skip-grant-tables &
mysql -u root
use mysql;
update user set password=PASSWORD("mynewpassword") where User='root';
update user set plugin="mysql_native_password";
quit;
/etc/init.d/mysql stop
sudo kill -9 $(pgrep mysql)
/etc/init.d/mysql start
Roy Yan
fuente
1
Ahora después de "mysql -u root" obtengo: ERROR 1524 (HY000): el plugin 'root' no está cargado
dxvargas
Parece que mezcló las dos consultas de ACTUALIZACIÓN. ¿Configuró plugin = "root" en caso de accidente?
Adam Plocher