Impossibile connettersi tramite MySQL Workbench a localhost in Ubuntu 16.04 (root senza password)


17

Il sito Web di Oracle sembra implicare che funziona solo su 15 e 14. http://dev.mysql.com/downloads/workbench/

Inoltre, due delle mie macchine Ubuntu 16.04 non sembrano essere in grado di connettersi (errori di accesso negato per root)

Immagine

Si installa bene. Si apre bene. Ma non si connetterà a localhost.

Qualcuno ha qualche fortuna?


L'hai costruito dalla fonte? Qual è l'errore esatto dato? Simile a quando si specifica una password errata?

Sì, è simile. Ma root non ha password. E posso collegarmi correttamente a root dalla riga di comando. E ho ricontrollato tutti i privilegi e sono corso FLUSH PRIVILEGES; A questo punto sono curioso di sapere se qualcuno può connettersi a localhost dalle 16, poiché il sito Oracle dice esplicitamente solo 14 e 15
Jonathan

Non ho visto Oracle affermare che non funziona, semplicemente non ho visto un binario per Xenial. Vedo comunque mysql-workbench qui, pacchetti.ubuntu.com/xenial/mysql-workbench . Tale errore non sembra un errore di compatibilità del software. Attiva la registrazione su mysql e aumenta il livello di registrazione a 2 e verifica se il registro mostra la tua richiesta.

@ bc2946088 mysql-workbenchè nel repository dell'universo per il link
Videonauth,

hai controllato una delle 4 opzioni? ;-) WB funziona perfettamente per me (con 5,7 btw). Prova di seguito.
Rinzwind,

Risposte:


27

Il problema è probabilmente dovuto all'autenticazione del socket abilitata per l'utente root per impostazione predefinita quando non è impostata alcuna password, durante l'aggiornamento a 16.04. Questo importante avvertimento è documentato nelle note di rilascio del 16.04 :

Il comportamento della password quando la password di root di MySQL è vuota è cambiato. Il packaging ora abilita l'autenticazione socket quando la password di root di MySQL è vuota. Ciò significa che un utente non root non può accedere come utente root MySQL con una password vuota.

Per qualsiasi motivo, MySQL Workbench fornito con 16.04 non funziona immediatamente con il server MySQL, almeno per me. Ho provato a utilizzare "Local Socket / Pipe" per connettermi in diversi modi, ma senza risultati.

La soluzione è ripristinare l'autenticazione con password nativa. Puoi farlo accedendo a MySQL usando l'autenticazione socket facendo:

sudo mysql -u root

Una volta effettuato l'accesso:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

che tornerà all'autenticazione della password nativa (impostazione predefinita precedente). Se hai tentato un altro metodo per risolvere il problema, assicurati che il campo "plugin" in mysql.user sia impostato su "auth_token", che potrebbe richiedere l'utilizzo di mysqld_safe per accedere a MySQL nel caso in cui tu ho armeggiato con le cose, come ho fatto io.

Ringraziamo il post sul blog di Miguel Nieto per questa soluzione.


Incredibile, non me ne sarei mai reso conto.
Jonathan,

Questo risolto, ma la prossima volta che ho eseguito apt update si è rotto di nuovo.
Jonathan,

Qual è stato l'output dell'aggiornamento apt?
Mike M,

Non l'ho visto, perché non me ne sono accorto fino alla prossima volta che ho eseguito mysql, molto più tardi
Jonathan

Mi chiedo se questa sia una cosa di Ubuntu 16.04 o una mysql 5.7 (è stato Oracle o Canonical a fare questa modifica?)
Jonathan

22

MySQL 5.7 e versioni successive non supportano la connessione come "root", mysql-workbenchquindi è necessario creare un utente normale e connettersi tramite quello.

sudo mysql -u root -p

Crea un utente chiamato "admin" e usalo per connetterti mysql-workbench.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

Questa risposta è stata perfetta per me, grazie Jonathan.
Chris Evans,

2
Funziona con Ubuntu 18.04
tadeubarbosa,

Perfetto. Grazie (18.04.2)
Ron Nuni,

4

Questa domanda potrebbe avere due anni, ma il mio lavoro con mysql-workbench stasera sembra avermi dato la risposta.

l'utente root ora utilizza l'autenticazione auth_socket per impostazione predefinita. L'unico modo in cui root può accedere è l'accesso come root.

L'ho scoperto correndo mysql -u root sia come utente root che come utente standard.

Non funzionerebbe con l'utente standard.

Quindi la mia prossima domanda era: quale utente esegue mysql-workbench. Si scopre che viene eseguito come utente standard per impostazione predefinita. Per farlo funzionare come utente root, deve essere eseguito da root. Quindi sono andato nella CLI dell'utente root e ho digitato "mysql-workbench".

Ho quindi dovuto andare nelle impostazioni per l'utente root come mostrato qui. Il percorso del file è valido per un'installazione ubuntu 18.04.

Impostazioni di connessione root mysql-workbench.

Se tale posizione del socket non è valida, sarà necessario accedere alla CLI mysql da root o sudo ed eseguire il comando seguente.

Comando CLI MySQL per trovare il socket.

Dopo aver impostato le impostazioni corrette, verifica la connessione. Dovrebbe avere successo e sei pronto per partire.


Grazie per questo! Non dovrei dover ripristinare le modifiche relative alla sicurezza all'autenticazione per supportare uno strumento più vecchio, quando posso semplicemente dire a quello strumento di connettersi utilizzando il metodo più recente.
Aaron,

Posso ottenere una connessione locale in questo modo? Non capisco perché non possiamo connetterci tramite TCP / IP.
john gonidelis,

2

Funziona bene per me e non ho fatto niente di speciale. Installato mysql-server-5.7e workbench sia dalla riga di comando che impostato un utente con una password e impostare le normali autorizzazioni del database (anche con il metodo normale).

inserisci qui la descrizione dell'immagine

E con un database e una tabella:

inserisci qui la descrizione dell'immagine


Interessante. Adoro il riferimento a discworld. Quando riconfiguro i pacchetti mysql, non mi viene richiesto di cambiare la password. Fai? Sono propenso a pensare che ho un'installazione corrotta o qualche conflitto. Penso che dovrei ricevere un prompt per cambiare la password di root.
Jonathan,

1

Crea un account utente con i privilegi di amministratore appropriati che possono connettersi tramite mysql workbench utilizzando il plug-in auth_socket. Si noti che questo non funziona per le connessioni root al server mysql .

Accedere a mysql da una sessione terminale:

$sudo mysql

Se sei in grado di farlo, il plug-in auth_socket è abilitato e l'account root si sta autenticando usando questo plug-in. Nota che questa è la configurazione predefinita quando installi mysql su Ubuntu dopo aver eseguito lo script di installazione sicura.

Innanzitutto crea un utente mysql per il tuo account "valerie":

mysql> CREATE USER 'valerie'@'localhost' IDENTIFIED WITH auth_socket;

Abilita i privilegi di amministratore per l'account:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'valerie'@'localhost' WITH GRANT OPTION;

Esci dalla shell:

mysql> exit

Quindi in mysql workbench:

  1. Crea una nuova connessione
  2. Selezionare il metodo di connessione come Presa / tubo locale
  3. Imposta il Socket / Pipe Path su: /var/run/mysqld/mysqld.sock (nota che questo è il percorso per un sistema Debian / Ubuntu e le modifiche per altre versioni di Linux)
  4. Imposta il nome utente ('valerie' in questo esempio)

Dovresti essere in grado di connetterti al server mysql con questa connessione.


0

prova questo

seleziona il database mysql

1: usa mysql;

2: UPDATE user set plugin = 'mysql_native_password' dove User = 'root';

3: privilegi flush;

4: uscita;

~ $ sudo service mysql restart


0

Server MySQL su host AWS con Ubuntu 16.04; mysql-workbench su laptop Ubuntu 16.04; utilizza la connessione KeyPair.

Dopo aver impostato Test connessione db funzionava. Ma la connessione effettiva ha sempre fallito con un messaggio come quello pubblicato da Jonathan Leaders. Controllato il registro ~/.mysql/workbench/loge trovato alcuni messaggi "permesso negato" .

Ora posso far funzionare mysql-workbench con: sudo mysql-workbench

E dopo posso andare e chmodle directory hanno bisogno del permesso.


2
È una risposta alla domanda?
George Udosen,
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.