Sequel Pro und MySQL-Verbindung fehlgeschlagen

94

Ich habe gerade MySQL auf Mac von Homebrew installiert

brew install mysql

mysql -V

mysql  Ver 8.0.11 for osx10.13 on x86_64 (Homebrew)

Vom Terminal aus funktioniert es und ich kann mich bei MySQL anmelden, aber von Sequel Pro heißt es

Geben Sie hier die Bildbeschreibung ein

Es kann keine Verbindung zum Host 127.0.0.1 hergestellt werden, oder die Anforderung ist abgelaufen.

Stellen Sie sicher, dass die Adresse korrekt ist und Sie über die erforderlichen Berechtigungen verfügen, oder erhöhen Sie das Verbindungszeitlimit (derzeit 10 Sekunden).

MySQL sagte: Das Authentifizierungs-Plugin 'caching_sha2_password' kann nicht geladen werden: dlopen (/usr/local/lib/plugin/caching_sha2_password.so, 2): Bild nicht gefunden

Ich kann nicht herausfinden, was mir fehlt

Hattori Hanzō
quelle

Antworten:

181

Dies liegt daran, dass Sequel Pro noch nicht für eine neue Art der Benutzeranmeldung bereit ist, da der Fehler besagt: Es gibt keinen Treiber. Schnelle Lösung für Nicht-Homebrew-Installationen:

Apple Logo > System Preferences > MySQL > Initialize DatabaseGeben Sie dann Ihr neues Passwort ein und wählen Sie "Legacy-Passwort verwenden".

Nach dem Neustart sollten Sie eine Verbindung herstellen können. Tun Sie dies nur bei Neuinstallationen, da Sie sonst Ihre DB-Tabellen verlieren könnten.

MySQL + Homebrew

Grundsätzlich müssen Sie einige Aktionen manuell ausführen. Ihre Datenbankdaten werden jedoch nicht wie in der obigen Lösung gelöscht

  • Gehen Sie zur Datei [my.cnf] [1] und [mysqld]fügen Sie im Abschnitt Zeile hinzufügen hinzu:

    default-authentication-plugin=mysql_native_password

  • Melden Sie sich vom Terminal aus beim MySQL-Server an: Führen Sie mysql -u root -pdiesen Befehl aus und führen Sie ihn in der Shell aus (indem Sie [Passwort] durch Ihr tatsächliches Passwort ersetzen ):

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

  • Verlassen Sie die MySQL-Shell mit exitund führen Sie sie aus brew services restart mysql.

Sollte arbeiten.


my.cnf

Die Datei my.cnf befindet sich unter Unix / Linux in /etc/my.cnf

Maciej Kwas
quelle
14
Ich kann MySQL nicht in den Systemeinstellungen finden
Hattori Hanzō
2
my.cnfVielen Dank für die Erklärung, kann aber keine Datei auf meinem Computer finden (macOS High Sierra 10.13.5)
Hattori Hanzō
2
Wenn es keine solche Datei gibt, müssen Sie eine erstellen: Bitte schauen Sie sich diesen Thread an: stackoverflow.com/questions/7973927/…
Maciej Kwas
13
Dies funktionierte hervorragend bei einer frischen brew install mysqlVerwendung/usr/local/etc/my.cnf
Mintwhip
5
Ich habe kein Passwort verwendet, also habe ich ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';- das hat bei mir funktioniert
Vincent Tang
33

TL; DR: Sequel Pro ist seit 2016 tot. Führen Sie kein Downgrade Ihrer Datenbank aufgrund eines Tools durch. Wechseln Sie zu einem alternativen Werkzeug.

Update 2020: Sequel Pro ist offiziell tot, aber inoffiziell lebendig! Die " nächtlichen " Builds, bei denen dieses Problem nicht auftritt (z. B. Unterstützung für MySQL 8-Authentifizierung), finden Sie hier: https://sequelpro.com/test-builds


Bei allen anderen Lösungen wird empfohlen, die DB-Einstellungen für das von Ihnen verwendete Tool zu ändern (wodurch die Sicherheit weniger sicher ist, wie von MySQL angekündigt). Das ist für mich nicht akzeptabel.

Ich war schon immer ein großer Fan von Sequel Pro und habe sogar dafür gespendet. Trotz all meiner Leidenschaft und Liebe tut es mir leid, wenn das Tool seit 2016 keine Veröffentlichung mehr hat . YOLO, und ich muss weitermachen!

Die Alternative, die ich gefunden habe (von https://stackoverflow.com/a/55235533/2321594 , dank @arcseldon), ist DBeaver, das die neue Authentifizierungsmethode (Nicht-Legacy) von MySQL 8 unterstützt.

PS. Der einzige Trick auf der Tool-Seite und nicht auf der DB-Seite besteht darin, dass Sie beim Erstellen einer MySQL 8-Verbindung möglicherweise zu "Treibereigenschaften" (später unter Verbindung bearbeiten) wechseln und den Wert von allowPublicKeyRetrievalauf drehen müssen true.

Ich brauchte dies, um eine Verbindung zu meinem mit Docker erstellten MySQL-Container herzustellen. Damit die IP von MySQL für jede andere Anwendung in Ihrem Ökosystem (nicht nur für dieses Tool) nach außen sichtbar ist, sollten Sie entweder einen neuen Benutzer in MySQL erstellen oder -e MYSQL_ROOT_HOST=%die Laufzeit oder als ENV übergeben.

Hilfe bei der
quelle
Ich glaube, @Aidin, Sie haben mir eine Ablehnung gegeben, nur weil meine Antwort das OP-Problem nicht löst. Es ist nur eine lokale Entwicklung und lokale Einstellungen - worum geht es also? Muss ich wirklich Software verlassen, mit der ich vertraut bin und mit der ich gerne arbeite, nur weil Sie es sagen?
Maciej Kwas
5
Bitte nimm es nicht persönlich @MaciejKwas. Obwohl ich hier mehr Erklärungen gebe, die ich sehr schätze, stehe ich immer noch zu meiner Stimme. Die drei Hauptgründe sind: 1) In der modernen Softwareentwicklung wird nicht empfohlen, unterschiedliche Einstellungen zwischen dev / prod beizubehalten. Es ist in der Tat Faktor X von 12factor.net/dev-prod-parity . 2) Diese Tools können auch zur Überprüfung von Produkten verwendet werden. Sie können einen SSH-Tunnel / Proxy erstellen und über ein GUI-Tool zu Ihrer Produktdatenbank gelangen. In solchen Fällen ist ein Downgrade der DB-Authentifizierung keine Option. 3) Ich persönlich schätze es nicht, mich nicht an Änderungen und Upgrades anzupassen.
Aidin
1
Ich komme auf ein MySQL-Projekt zurück, das ich seit ein paar Jahren nicht mehr lokal ausgeführt habe. Es war absolut solide und ich bin so traurig herauszufinden, dass Sequel Pro tot ist :(
Catfish
Wählen Sie auch den MySQL + 8-Treiber in DBeaver aus, da mehrere Treiber zur Auswahl stehen. Setzen Sie in den Treibereigenschaften allowPublicKeyRetrieval auf true und save.
Peheje
18
  1. Angenommen, Sie haben keine MySQL- Konfiguration, geben Sie Folgendes an~/.my.conf
[mysqld]
default-authentication-plugin=mysql_native_password
  1. Melden Sie sich in mysql mitmysql -u root -p
  2. Stellen Sie das Root - Benutzer - Passwort mit ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[PASSWORD]';dem [PASSWORD]ein Passwort Ihrer Wahl.
  3. Starten Sie MySQL mit zbrew services restart mysql
Ilias Karim
quelle
6

Wenn Sie über [email protected] eine Verbindung zu MySQL herstellen, stellen Sie sicher, dass Sie auch das Kennwort zurücksetzen!

ALTER USER 'root'@'127.0.0.1' IDENTIFIZIERT MIT mysql_native_password BY '[password]';

Xeno
quelle
Ich bekomme:ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 50, found 49. Created with MySQL 80012, now running 80013. Please use mysql_upgrade to fix this error.
Chance Smith
Versuchen Sie dies auf dem Terminal: mysql_upgrade --force -uroot -p
Xeno
mysql_upgrade ist jetzt veraltet und funktioniert nicht mehr. Verwenden Sie stattdessen mysqld --upgrade = FORCE.
ilovecookiez11
6

Sequel Pro ist offiziell tot und unterstützt keine neueren MySql-Funktionen mehr. Die gute Nachricht ist jedoch, dass es durch Sequel Ace ersetzt wurde, das im GitHub und App Store erhältlich ist . Die App ist kostenlos und sieht aus wie ein offizieller Ersatz für Sequel Pro, da der Beitrag von einem der Mitarbeiter von Sequel Pro erstellt wurde .

Ps. Ich habe mich entschlossen, dies als Antwort zu veröffentlichen, da andere nicht erwähnt haben, dass es jetzt einen aktuellen Ersatz für Sequel Pro gibt

Alexander Kucheryuk
quelle
Vielen Dank für Neuigkeiten, sehr geschätzt.
Hattori Hanzō
Schließlich! Ich habe eine Weile gewartet.
Jonny
1

Wenn jemand mit diesem Problem konfrontiert und MySQL version >8durch .dmgDownload über den offiziellen Link installiert ist . In diesem Fall verwenden Sie bitte diese Richtlinie .

Amrendra
quelle
1
Die Verwendung eines alten Passworts hat bei mir funktioniert. Vielen Dank!
Richard Witherspoon
1

Es funktioniert für mich. Wenn Sie diesen Fehler erhalten:

Es kann keine Verbindung zum Host 127.0.0.1 hergestellt werden, oder die Anforderung ist abgelaufen.

Stellen Sie sicher, dass die Adresse korrekt ist und Sie über die erforderlichen Berechtigungen verfügen, oder erhöhen Sie das Verbindungszeitlimit (derzeit 10 Sekunden).

MySQL sagte: Das Authentifizierungs-Plugin 'caching_sha2_password' kann nicht geladen werden: dlopen (/usr/local/lib/plugin/caching_sha2_password.so, 2):

Bitte versuchen Sie diese Lösung

Geben Sie hier die Bildbeschreibung ein

Golam Sorwar
quelle
Lief wie am Schnürchen.
Jimmy Adaro vor