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.