Połączenie Sequel Pro i MySQL nie powiodło się

98

Właśnie zainstalowałem mysql na Macu z Homebrew

brew install mysql

mysql -V

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

z terminala to działa i mogę zalogować się do mysql, ale z Sequel Pro jest napisane

wprowadź opis obrazu tutaj

Nie można połączyć się z hostem 127.0.0.1 lub przekroczono limit czasu żądania.

Upewnij się, że adres jest poprawny i masz niezbędne uprawnienia, lub spróbuj zwiększyć limit czasu połączenia (obecnie 10 sekund).

MySQL powiedział: Nie można załadować wtyczki uwierzytelniania „caching_sha2_password”: dlopen (/usr/local/lib/plugin/caching_sha2_password.so, 2): nie znaleziono obrazu

nie mogę dowiedzieć się, czego mi brakuje

Hattori Hanzō
źródło

Odpowiedzi:

188

Dzieje się tak, ponieważ Sequel Pro nie jest jeszcze gotowy na nowy rodzaj logowania użytkownika, ponieważ błąd stwierdza: nie ma sterownika.

mysql + homebrew

Zasadniczo będziesz musiał wykonać kilka czynności ręcznie, jednak - dane z bazy danych nie zostaną usunięte, jak w rozwiązaniu poniżej

  • Przejdź do pliku my.cnf iw sekcji [mysqld]dodaj wiersz:

    default-authentication-plugin=mysql_native_password

  • Zaloguj się do serwera mysql z terminala: uruchom mysql -u root -p, a następnie w powłoce wykonaj to polecenie (zastępując [hasło] swoim rzeczywistym hasłem):

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

  • wyjdź z powłoki mysql za pomocą exiti uruchom brew services restart mysql.

Powinno działać.

Szybka naprawa (metoda niszcząca)

Szybka poprawka dla instalacji innych niż homebrew:

Apple Logo > System Preferences > MySQL > Initialize Database, a następnie wpisz nowe hasło i wybierz opcję „Użyj starszego hasła”

Po ponownym uruchomieniu powinno być możliwe połączenie. Rób to tylko przy nowych instalacjach, ponieważ w przeciwnym razie możesz utracić tabele db.


my.cnf

Plik my.cnf znajduje się w /etc/my.cnf w systemie Unix / Linux


Alternatywy

Dla tych, którzy wciąż borykają się z problemami Sequel Pro: Sequel Pro był świetnym produktem, ale z mnóstwem nierozwiązanych problemów i ostatnią wersją datowaną na 2016 rok, być może dobrym pomysłem jest poszukanie alternatyw. Jest widelec SequelPro o nazwie SequelAce, który wydaje się być dość stabilny i aktualny, zachowuje podobną funkcjonalność, podobny wygląd i styl, ale jednocześnie jest pozbawiony starych problemów z Sequel Pro
Maciej Kwas
źródło
14
Nie mogę znaleźć MySQL w Preferencjach systemowych
Hattori Hanzō,
2
dzięki za wyjaśnienie, ale nie mogę zlokalizować my.cnfpliku na moim komputerze (macOS High Sierra 10.13.5)
Hattori Hanzō
2
Jeśli nie ma takiego pliku, będziesz musiał go stworzyć: zapraszam, zajrzyj do tego wątku: stackoverflow.com/questions/7973927/…
Maciej Kwas
14
To działało świetnie na nowym brew install mysqlużyciu/usr/local/etc/my.cnf
mintwhip
5
Nie użyłem hasła, więc użyłem ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';- to działało dla mnie
Vincent Tang
38

TL; DR: Sequel Pro nie żyje od 2016 roku. Nie obniżaj swojej bazy danych z powodu narzędzia. Przejdź do alternatywnego narzędzia.

Aktualizacja 2020: Sequel Pro oficjalnie nie żyje, ale nieoficjalnie żyje! Możesz znaleźć " nocne " kompilacje, które nie mają tego problemu (tj. Obsługują uwierzytelnianie Mysql 8) tutaj: https://sequelpro.com/test-builds


Wszystkie inne rozwiązania tutaj zalecają zmianę ustawień bazy danych (czyniąc ją mniej bezpieczną, jak reklamuje MySQL) dla używanego narzędzia. To jest dla mnie nie do przyjęcia.

Zawsze byłem wielkim fanem Sequel Pro, nawet przekazałem mu darowiznę. Ale z całą moją pasją i miłością przepraszam, jeśli narzędzie nie ma żadnej wersji od 2016 roku . YOLO, muszę iść dalej!

Alternatywą, którą znalazłem (z https://stackoverflow.com/a/55235533/2321594 , dzięki @arcseldon) jest DBeaver, który obsługuje nową metodę uwierzytelniania MySQL 8 (nie starszą ).

PS. Jedyna sztuczka po stronie narzędzia, a nie DB, polega na tym, że podczas tworzenia połączenia MySQL 8 może być konieczne przejście do "Właściwości sterownika" (później można je znaleźć w Edytuj połączenie) i ustawić wartość allowPublicKeyRetrievalna true.

Potrzebowałem tego, aby połączyć się z moim kontenerem MySQL utworzonym za pomocą Dockera. Aby adres IP MySQL był widoczny na zewnątrz, dla dowolnej innej aplikacji w Twoim ekosystemie (nie tylko tego narzędzia), powinieneś albo utworzyć nowego użytkownika w MySQL, albo przekazać -e MYSQL_ROOT_HOST=%w czasie wykonywania lub jako ENV.

Aidin
źródło
Wierzę, że @Aidin dał mi głos przeciw, tylko dlatego, że moja odpowiedź nie rozwiązuje problemu z OP. To tylko lokalny rozwój i lokalne ustawienia - więc o co chodzi? Czy naprawdę muszę opuścić oprogramowanie, które znam i lubię z nim pracować tylko dlatego, że tak mówisz?
Maciej Kwas
5
Nie bierz tego do siebie @MaciejKwas. Pomimo podania w tym miejscu dalszych wyjaśnień, które doceniam, nadal trzymam się mojego głosu. Trzy główne powody to: 1) Utrzymywanie różnych ustawień między dev / prod nie jest zalecane w nowoczesnym rozwoju oprogramowania. W rzeczywistości jest to czynnik X 12factor.net/dev-prod-parity . 2) Ludzie mogą również używać tych narzędzi do sprawdzania produktów. Możesz utworzyć tunel ssh / proxy i dostać się do bazy danych produktu za pomocą narzędzia GUI. W takich przypadkach obniżenie poziomu autoryzacji bazy danych nie jest opcją. 3) Brak dostosowywania się do zmian i aktualizacji jest czymś, czego osobiście nie cenię.
Aidin
1
Wracam do projektu MySQL, którego nie pracowałem lokalnie od kilku lat b / c, było solidne i jestem bardzo smutny, gdy dowiaduję się, że sequel pro nie żyje :(
Catfish
Wybierz również sterownik MySQL +8 w DBeaver, ponieważ istnieje wiele sterowników do wyboru. We właściwościach sterownika ustaw allowPublicKeyRetrieval na true i save.
Peheje
18
  1. Zakładając, że nie masz konfiguracji mysql , powtórz następujące polecenie do~/.my.conf
[mysqld]
default-authentication-plugin=mysql_native_password
  1. Zaloguj się do mysql za pomocąmysql -u root -p
  2. Ustaw hasło użytkownika root, ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[PASSWORD]';gdzie [PASSWORD]jest wybrane hasło.
  3. Zrestartuj mysql za pomocą npbrew services restart mysql
Ilias Karim
źródło
10

Sequel Pro oficjalnie nie żyje i nie obsługuje już nowszych funkcji MySql. Jednak dobrą wiadomością jest to, że został zastąpiony przez Sequel Ace, który jest dostępny na GitHub i App Store . Aplikacja jest bezpłatna i wygląda jak oficjalny zamiennik Sequel Pro, ponieważ post został napisany przez jednego ze współpracowników Sequel Pro .

Ps. Postanowiłem opublikować to jako odpowiedź, ponieważ inni nie wspominali, że jest teraz aktualny zamiennik dla Sequel Pro

Alexander Kucheryuk
źródło
Dziękuję za wiadomości, bardzo doceniane.
Hattori Hanzō
Wreszcie! Czekałem chwilę.
Jonny
6

Jeśli łączysz się z MySQL przez [email protected], upewnij się, że zresetowałeś również jego hasło!

ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY '[hasło]';

Xeno
źródło
Otrzymuję: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
spróbuj tego na terminalu: mysql_upgrade --force -uroot -p
Xeno
mysql_upgrade został wycofany i nie będzie działać, zamiast tego użyj mysqld --upgrade = FORCE.
ilovecookiez11
1

Jeśli ktoś napotka ten problem i zainstaluje go MySQL version >8do .dmgpobrania z oficjalnego linku. W takim przypadku skorzystaj z tej wskazówki .

amrendra
źródło
1
U mnie zadziałało hasło starego typu. Dziękuję Ci!
Richard Witherspoon,
1

To działa na mnie. jeśli otrzymujesz ten błąd:

Nie można połączyć się z hostem 127.0.0.1 lub przekroczono limit czasu żądania.

Upewnij się, że adres jest poprawny i masz niezbędne uprawnienia, lub spróbuj zwiększyć limit czasu połączenia (obecnie 10 sekund).

MySQL powiedział: Nie można załadować wtyczki uwierzytelniania „caching_sha2_password”: dlopen (/usr/local/lib/plugin/caching_sha2_password.so, 2):

Plz spróbuj tego rozwiązania

wprowadź opis obrazu tutaj

Golam Sorwar
źródło
Działał jak urok.
Jimmy Adaro