Verbindung über MySQL Workbench mit localhost in Ubuntu 16.04 (kennwortloses Stammverzeichnis) nicht möglich

16

Die Oracle-Website scheint zu implizieren, dass sie nur für 15 und 14 funktioniert. Http://dev.mysql.com/downloads/workbench/

Außerdem scheinen zwei meiner Ubuntu 16.04-Maschinen keine Verbindung herstellen zu können (Fehler "Zugriff verweigert" für root)

Bild

Es wird in Ordnung installiert. Es öffnet sich in Ordnung. Es wird jedoch keine Verbindung zu localhost hergestellt.

Hat jemand Glück?

Jonathan
quelle
Hast du es aus der Quelle gebaut? Was ist der genaue Fehler angegeben? Ähnlich wie bei der Eingabe eines falschen Passworts?
Ja, es ist ähnlich. Aber root hat kein Passwort. Und ich kann mich auf der Kommandozeile korrekt mit root verbinden. Und ich habe alle Privilegien doppelt überprüft und ausgeführt. FLUSH PRIVILEGES; An dieser Stelle bin ich gespannt, ob jemand eine Verbindung zu localhost ab 16 herstellen kann, da auf der Oracle-Site explizit nur 14 und 15 angegeben sind
Jonathan
Ich habe nicht gesehen, dass Oracle behauptet, dass es nicht funktioniert. Ich habe nur keine Binärdatei für Xenial gesehen. Ich sehe jedoch mysql-workbench hier, packages.ubuntu.com/xenial/mysql-workbench . Dieser Fehler scheint kein Softwarekompatibilitätsfehler zu sein. Aktivieren Sie die Protokollierung in MySQL, und erhöhen Sie die Protokollierungsstufe auf 2. Überprüfen Sie, ob im Protokoll Ihre Anforderung angezeigt wird.
@ bc2946088 mysql-workbenchist im Universum Repository für 16.04 Link
Videonauth
Haben Sie eine der 4 Optionen überprüft? ;-) WB funktioniert perfekt für mich (mit 5,7 BTW). Beweis unten.
Rinzwind

Antworten:

26

Das Problem ist wahrscheinlich darauf zurückzuführen, dass die Socket-Authentifizierung für den Root-Benutzer standardmäßig aktiviert ist, wenn während des Upgrades auf 16.04 kein Kennwort festgelegt wurde. Diese wichtige Einschränkung ist in den 16.04 Release Notes dokumentiert :

Das Passwortverhalten, wenn das MySQL-Root-Passwort leer ist, hat sich geändert. Das Paketieren ermöglicht jetzt die Socket-Authentifizierung, wenn das MySQL-Root-Passwort leer ist. Dies bedeutet, dass sich ein Benutzer ohne Rootberechtigung nicht als MySQL-Rootbenutzer mit einem leeren Kennwort anmelden kann.

Aus irgendeinem Grund funktioniert die mit 16.04 gelieferte MySQL Workbench nicht ohne Weiteres mit MySQL-Server, zumindest für mich. Ich habe versucht, mit "Local Socket / Pipe" auf verschiedene Arten eine Verbindung herzustellen, aber ohne Erfolg.

Die Lösung besteht darin, zur nativen Kennwortauthentifizierung zurückzukehren. Sie können sich dazu bei MySQL mithilfe der Socket-Authentifizierung anmelden, indem Sie folgende Schritte ausführen:

sudo mysql -u root

Einmal eingeloggt:

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

Dadurch wird die native (alte Standardeinstellung) Kennwortauthentifizierung wiederhergestellt. Wenn Sie versucht haben, das Problem mit einer anderen Methode zu beheben, müssen Sie sicherstellen, dass das Feld "plugin" in mysql.user auf "auth_token" gesetzt ist. Dies erfordert möglicherweise, dass Sie sich mit mysqld_safe bei MySQL anmelden Ich habe mit Dingen herumgebastelt, wie ich es getan habe.

Dank an Miguel Nietos Blogpost für diese Lösung.

Mike M
quelle
Erstaunlicherweise hätte ich das nie bemerkt.
Jonathan
Das Problem wurde behoben, aber als ich das nächste Mal apt update ausführte, brach es erneut.
Jonathan
Was war die Ausgabe von apt update?
Mike M
Ich habe es nicht gesehen, weil ich es erst bemerkte, als ich das nächste Mal mysql ausführte, viel später
Jonathan
Ich frage mich, ob dies eine Ubuntu 16.04-Sache oder eine MySQL 5.7-Sache ist (hat Oracle oder Canonical diese Änderung vorgenommen?)
Jonathan
21

MySQL 5.7 und höher unterstützen keine Verbindung als "root" in, mysql-workbenchdaher müssen Sie einen normalen Benutzer erstellen und über diesen eine Verbindung herstellen.

sudo mysql -u root -p

Erstellen Sie einen Benutzer mit dem Namen "admin" und stellen Sie mit diesem eine Verbindung her mysql-workbench.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
Jonathan
quelle
Diese Antwort war perfekt für mich, danke Jonathan.
Chris Evans
2
Dies funktioniert für Ubuntu 18.04
Tadeubarbosa
Perfekt. Vielen Dank (18.04.2)
Ron Nuni
4

Diese Frage mag zwei Jahre alt sein, aber meine Arbeit mit mysql-workbench heute Abend scheint mir die Antwort darauf gegeben zu haben.

Der Root-Benutzer verwendet jetzt standardmäßig die Authentifizierung auth_socket. Der einzige Weg, auf den root zugreifen kann, besteht darin, als root angemeldet zu sein.

Ich habe dies herausgefunden, indem ich mysql -u rootsowohl als Root-Benutzer als auch als Standardbenutzer ausgeführt habe.

Es würde nicht unter Standardbenutzer arbeiten.

Meine nächste Frage war also, unter welchem ​​Benutzer mysql-workbench läuft. Es stellte sich heraus, dass es standardmäßig als Standardbenutzer ausgeführt wird. Damit es als root-Benutzer ausgeführt werden kann, muss es von root ausgeführt werden. Also ging ich in die Root-Benutzer-CLI und tippte "mysql-workbench" ein.

Ich musste dann in die Einstellungen für den root-Benutzer gehen, wie hier gezeigt. Der Dateispeicherort ist gültig für eine Ubuntu 18.04-Installation.

Root Verbindungseinstellungen MySQL-Workbench.

Wenn dieser Socket-Speicherort ungültig ist, müssen Sie von root oder sudo aus in die mysql-CLI gehen und den folgenden Befehl ausführen.

MySQL CLI-Befehl zum Auffinden des Sockets.

Nachdem Sie die richtigen Einstellungen vorgenommen haben, testen Sie die Verbindung. Es sollte erfolgreich sein und Sie können loslegen.

George Tasker
quelle
Danke dafür! Ich sollte keine sicherheitsrelevanten Änderungen an der Authentifizierung rückgängig machen müssen, um ein älteres Tool zu unterstützen, wenn ich diesem Tool einfach anweisen kann, eine Verbindung mit der neueren Methode herzustellen.
Aaron
Erreiche ich auf diese Weise eine lokale Verbindung? Ich verstehe nicht, warum wir keine Verbindung über TCP / IP herstellen können.
John Gonidelis
2

Funktioniert gut für mich und ich habe nichts Besonderes gemacht. Installiert mysql-server-5.7und Workbench sowohl über die Befehlszeile als auch Einrichten eines Benutzers mit einem Kennwort und Einrichten der normalen Datenbankberechtigungen (auch mit der normalen Methode).

Bildbeschreibung hier eingeben

Und mit einer Datenbank und einer Tabelle:

Bildbeschreibung hier eingeben

Rinzwind
quelle
Interessant. Ich liebe die Discworld-Referenz. Wenn ich die mysql-Pakete neu konfiguriere, bekomme ich keine Aufforderung, das Passwort zu ändern. Machst du? Ich neige dazu zu glauben, dass ich eine beschädigte Installation oder einen Konflikt habe. Ich denke, ich sollte eine Aufforderung zum Ändern des root-Passworts erhalten.
Jonathan
1

Erstellen Sie ein Benutzerkonto mit den entsprechenden Administratorrechten, das mithilfe des Plugins auth_socket eine Verbindung über die MySQL-Workbench herstellen kann. Beachten Sie, dass dies nicht für Root-Verbindungen zum MySQL-Server funktioniert .

Melden Sie sich von einer Terminalsitzung aus bei MySQL an:

$sudo mysql

Wenn Sie dazu in der Lage sind, wird das Plugin auth_socket aktiviert und das Root-Konto authentifiziert sich mit diesem Plugin. Beachten Sie, dass dies die Standardeinstellung ist, wenn Sie mysql unter ubuntu installieren, nachdem Sie das sichere Installationsskript ausgeführt haben.

Erstellen Sie zunächst einen MySQL-Benutzer für Ihr Konto 'valerie':

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

Aktivieren Sie Administratorrechte für das Konto:

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

Verlasse die Shell:

mysql> exit

Dann in MySQL Workbench:

  1. Erstellen Sie eine neue Verbindung
  2. Wählen Sie die Verbindungsmethode als Local Socket / Pipe
  3. Setzen Sie den Socket / Pipe-Pfad auf: /var/run/mysqld/mysqld.sock (beachten Sie, dass dies der Pfad für ein Debian / Ubuntu-System und Änderungen für andere Linux- Versionen ist)
  4. Setze den Benutzernamen ('valerie' in diesem Beispiel)

Sie sollten dann in der Lage sein, mit dieser Verbindung eine Verbindung zum MySQL-Server herzustellen.

David
quelle
0

Versuche dies

Wählen Sie MySQL-Datenbank

1: benutze mysql;

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

3: Flush-Privilegien;

4: Ausfahrt;

~ $ sudo service mysql restart

URI
quelle
0

MySQL-Server auf AWS-Host mit Ubuntu 16.04; Mysql-Workbench auf Ubuntu 16.04 Laptop; Verwendet die KeyPair-Verbindung.

Nach dem Einrichten des Tests funktionierte die DB-Verbindung. Bei einer Nachricht wie der von Jonathan Leaders schlug die eigentliche Verbindung jedoch immer fehl. Überprüfte das Protokoll um ~/.mysql/workbench/logund fand einige "Berechtigungsverweigerungs" -Nachrichten.

Jetzt kann ich mit mysql-workbench arbeiten: sudo mysql-workbench

Und später kann ich gehen und chmoddie Verzeichnisse benötigen Erlaubnis.

Usman Suleman
quelle
2
Ist das eine Antwort auf die Frage?
George Udosen