Ubuntu 15.10 mysql error 1524 - unix_socket


51

Su Ubuntu 15.10, ad un certo punto (forse dopo un'installazione e rimozione di mariadb) mysql non è stato in grado di funzionare. Le attività sono attive, ma il server non è attivo.

Al comando:

mysql -u root -p

il sistema risponde come un:

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

Nessun modo per accedere, nessun plug-in trovato, nessun errore nei file di configurazione (tutti predefiniti).

Come riprendere il controllo e far funzionare il server mysql?


Non ho familiarità con questo particolare errore, ma vedi questa discussione: lists.launchpad.net/maria-developers/msg08177.html
— Jos

@Jos: quella discussione, forse per una situazione simile, non offre una soluzione. Ho cercato su Google molto, ma non ho trovato una soluzione completa esposta. Comunque, ho pubblicato una risposta funzionante.
— Hydra Starmaster il

Informazioni sul motivo del messaggio di errore: il plug-in unix_socket fa parte di MariaDB (non MySQL) e deve essere caricato affinché le sovvenzioni lo utilizzino per funzionare: mariadb.com/kb/en/library/authentication-plugin-unix-socket
— JonnyJD,

Risposte:


94

"Unix_socket" è stato chiamato dal processo di autenticazione mysql (forse correlato a una migrazione parziale del database su mariadb, ora rimosso). Per rimettere tutto al lavoro, vai su:

sudo su

quindi seguire:

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

Ciò interromperà completamente mysql, ignorerà l'autenticazione dell'utente (non è necessaria la password) e si connetterà a mysql con l'utente "root".

Ora, nella console mysql, vai usando mysql amministrativo db:

use mysql;

Per reimpostare la password di root su mynewpassword (modificarla a piacere ), per essere sicuri:

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

E questo sovrascriverà il metodo di autenticazione, rimuoverà la richiesta unix_socket (e tutto il resto), ripristinando un metodo di password normale e funzionante:

update user set plugin="mysql_native_password";

Esci dalla console mysql:

quit;

Interrompi e avvia tutto ciò che riguarda mysql:

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

Non dimenticare exitla modalità su.

Ora il server mySQL è attivo e funzionante. Puoi accedere con root:

mysql -u root -p

o qualunque cosa tu voglia. L'uso della password è operativo.

Questo è tutto.


La mia mysqld_safenon ha opzioni come ... cosa --skip-grant-tablesdà?
— heemayl

Sono su mysqld 5.6.27-0ubuntu1. Dovresti trovare mysqld --verbose --help
— quell'opzione

2
Questo mi ha fatto andare. Con alcune differenze invece delle mysqld_safequali si lamentava l'argomento: non esistevano le tabelle -skip-grant-tables che ho usato mysqld. Tuttavia continuava a lamentarsi di non poter creare i file socket in /var/run/mysqld/. Ho controllato la configurazione di Apparmor e aveva le autorizzazioni appropriate. Per risolvere questo problema ho dovuto mkdir /var/run/mysqld/e poi dare i permessi completamente aperti: chmod -R 777 /var/run/mysqld/. Quindi potrei finalmente avviare il demone e cambiare il plugin in 'mysql_native_password'.
— Dennmat,

1
La mia tabella utenti non ha un campo password (Ubuntu 16 mysql 5.7.13). Ho usato questo SQL: UPDATE mysql.user SET authentication_string = PASSWORD ('foobar123'), password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';
— Anthony Scaife,

Le istruzioni qui sono concise e mi hanno aiutato a risolvere il problema. Grazie!
— Eduardo B.

11

Ecco i miei passi per farlo:

/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

1
Ora dopo "mysql -u root" ottengo: ERRORE 1524 (HY000): il plugin 'root' non è caricato
— dxvargas,

Sembra che tu abbia confuso le due query di AGGIORNAMENTO. Hai impostato plugin = "root" in caso di incidente?
— Adam Plocher,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.