Nie można połączyć się przez MySQL Workbench z localhost w Ubuntu 16.04 (root bez hasła)

19

Wygląda na to, że witryna Oracle sugeruje, że działa tylko w wersjach 15 i 14. http://dev.mysql.com/downloads/workbench/

Również dwa z moich komputerów Ubuntu 16.04 nie wydają się być w stanie połączyć (błędy odmowy dostępu dla roota)

Obrazek

Instaluje się dobrze. Otwiera się dobrze. Ale nie połączy się z localhost.

Czy ktoś ma szczęście?

Jonathan
źródło
Czy zbudowałeś go ze źródła? Jaki jest dokładnie podany błąd? Podobnie jak w przypadku podania nieprawidłowego hasła?
Tak, jest podobnie. Ale root nie ma hasła. I mogę poprawnie połączyć się z rootem w wierszu poleceń. I dwukrotnie sprawdziłem wszystkie uprawnienia i pobiegłem FLUSH PRIVILEGES; W tym momencie jestem ciekawy, czy ktoś może połączyć się z localhost z 16, ponieważ strona Oracle wyraźnie mówi tylko 14 i 15
Jonathan
Nie widziałem, jak Oracle twierdzi, że to nie działa, po prostu nie widziałem pliku binarnego dla Xenial. Widzę jednak tutaj mysql-workbench, packages.ubuntu.com/xenial/mysql-workbench . Ten błąd nie wydaje się być błędem zgodności oprogramowania. Włącz rejestrowanie na mysql i zwiększ poziom rejestrowania do 2 i sprawdź, czy dziennik pokazuje twoje żądanie.
@ bc2946088 mysql-workbenchznajduje się w repozytorium wszechświata dla linku
Videonauth
czy sprawdziłeś którąś z 4 opcji? ;-) WB działa dla mnie idealnie (z 5,7 btw). Dowód poniżej.
Rinzwind

Odpowiedzi:

31

Problem prawdopodobnie wynika z domyślnego włączenia uwierzytelniania gniazda dla użytkownika root, gdy hasło nie jest ustawione, podczas aktualizacji do 16.04. To ważne zastrzeżenie zostało udokumentowane w uwagach do wydania 16.04 :

Zachowanie hasła, gdy hasło root MySQL jest puste, uległo zmianie. Pakowanie umożliwia teraz uwierzytelnianie gniazda, gdy hasło root MySQL jest puste. Oznacza to, że użytkownik inny niż root nie może zalogować się jako użytkownik root MySQL z pustym hasłem.

Z jakiegokolwiek powodu MySQL Workbench dostarczany z 16.04 nie działa od razu z serwerem MySQL, przynajmniej dla mnie. Próbowałem użyć „lokalnego gniazda / rury”, aby połączyć się na wiele różnych sposobów, ale bezskutecznie.

Rozwiązaniem jest przywrócenie natywnego uwierzytelniania za pomocą hasła. Możesz to zrobić, logując się do MySQL przy użyciu uwierzytelniania gniazd, wykonując:

sudo mysql -u root

Po zalogowaniu:

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

która powróci do natywnego (starego domyślnego) uwierzytelnienia hasła. Jeśli próbujesz rozwiązać problem w inny sposób, upewnij się, że pole „plugin” w mysql.user jest ustawione na „auth_token”, co może wymagać użycia mysqld_safe do zalogowania się na MySQL w przypadku majstrowałem przy rzeczach, tak jak ja.

Kredyt dla Miguela Nieto na blogu dla tego rozwiązania.

Mike M.
źródło
Niesamowite, nigdy bym tego nie uświadomił.
Jonathan
To naprawiło, ale kiedy następnym razem uruchomiłem apt update, znowu się zepsuł.
Jonathan
Jakie były wyniki aktualizacji apt?
Mike M
Nie widziałem tego, ponieważ zauważyłem dopiero następnym razem, gdy uruchomiłem mysql, znacznie później
Jonathan
Zastanawiam się, czy jest to kwestia Ubuntu 16.04, czy mysql 5.7 (czy to Oracle, czy Canonical wprowadził tę zmianę?)
Jonathan
23

MySQL 5.7 i nowsze nie obsługują łączenia jako „root”, mysql-workbenchwięc musisz utworzyć normalnego użytkownika i połączyć się przez to.

sudo mysql -u root -p

Utwórz użytkownika o nazwie „admin” i użyj go, aby się połączyć mysql-workbench.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
Jonathan
źródło
Ta odpowiedź była dla mnie idealna, dzięki Jonathan.
Chris Evans
2
Działa to dla Ubuntu 18.04
tadeubarbosa
Doskonały. Dziękuję (18.04.2)
Ron Nuni
5

To pytanie może mieć dwa lata, ale wydaje mi się, że moja dzisiejsza praca z mysql-workbench dała mi odpowiedź.

użytkownik root teraz domyślnie uwierzytelnia użytkowników auth_socket. Jedynym sposobem, w jaki root może uzyskać dostęp, jest zalogowanie się jako root.

Dowiedziałem się tego, działając mysql -u rootzarówno jako użytkownik root, jak i użytkownik standardowy.

Nie działałby pod standardowym użytkownikiem.

Moje następne pytanie brzmiało: - jak działa użytkownik mysql-workbench. Okazuje się, że domyślnie działa jako użytkownik standardowy. Aby uruchomić go jako użytkownik root, należy go uruchomić z poziomu roota. Więc poszedłem do interfejsu użytkownika root i napisałem „mysql-workbench”.

Następnie musiałem przejść do ustawień użytkownika root, jak pokazano tutaj. Lokalizacja pliku jest ważna dla instalacji Ubuntu 18.04.

Ustawienia głównego połączenia mysql-workbench.

Jeśli ta lokalizacja gniazda jest nieprawidłowa, musisz przejść do interfejsu CLI mysql z poziomu root lub sudo i uruchomić następującą komendę.

MySQL CLI polecenie, aby znaleźć gniazdo.

Po wprowadzeniu prawidłowych ustawień przetestuj połączenie. To powinno się udać i jesteś gotowy do pracy.

George Tasker
źródło
Dziękuję Ci za to! Nie powinienem cofać zmian związanych z bezpieczeństwem w uwierzytelnianiu, aby obsługiwać starsze narzędzie, kiedy mogę po prostu powiedzieć temu narzędziu, aby łączyło się przy użyciu nowszej metody.
Aaron,
Czy w ten sposób uzyskuję połączenie lokalne? Nie rozumiem, dlaczego nie możemy się połączyć przez TCP / IP.
John Gononis,
2

Działa dla mnie dobrze i nie zrobiłem nic specjalnego. Zainstalowany mysql-server-5.7i workbench zarówno z poziomu wiersza poleceń, jak i użytkownika z hasłem i normalnych uprawnień do bazy danych (także przy użyciu normalnej metody).

wprowadź opis zdjęcia tutaj

Z bazą danych i tabelą:

wprowadź opis zdjęcia tutaj

Rinzwind
źródło
Ciekawy. Uwielbiam odniesienia do świata dyskoteki Podczas ponownej konfiguracji pakietów mysql nie pojawia się monit o zmianę hasła. Czy ty? Skłaniam się ku myśleniu, że mam zepsutą instalację lub jakiś konflikt. Myślę, że powinienem otrzymać monit o zmianę hasła roota.
Jonathan
1

Utwórz konto użytkownika z odpowiednimi uprawnieniami administracyjnymi, które można połączyć za pomocą środowiska roboczego mysql przy użyciu wtyczki auth_socket. Zauważ, że to nie działa w przypadku połączeń root z serwerem mysql .

Zaloguj się do mysql z sesji terminalowej:

$sudo mysql

Jeśli możesz to zrobić, wtyczka auth_socket jest włączona, a konto root uwierzytelnia się za pomocą tej wtyczki. Zauważ, że jest to domyślna konfiguracja podczas instalacji mysql na Ubuntu po uruchomieniu skryptu bezpiecznej instalacji.

Najpierw utwórz użytkownika mysql dla swojego konta „valerie”:

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

Włącz uprawnienia administracyjne dla konta:

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

Wyjdź z powłoki:

mysql> exit

Następnie w mysql workbench:

  1. Utwórz nowe połączenie
  2. Wybierz metodę połączenia jako Lokalne gniazdo / rura
  3. Ustaw ścieżkę Socket / Pipe na: /var/run/mysqld/mysqld.sock (zwróć uwagę, że jest to ścieżka dla systemu Debian / Ubuntu i zmiany dla innych wersji Linuksa)
  4. Ustaw nazwę użytkownika (w tym przykładzie „valerie”)

Dzięki temu połączeniu powinieneś być w stanie połączyć się z serwerem mysql.

David
źródło
0

Spróbuj tego

wybierz bazę danych mysql

1: użyj mysql;

2: UPDATE użytkownik ustaw wtyczkę = 'mysql_native_password' gdzie Użytkownik = 'root';

3: uprawnienia do spłukiwania;

4: wyjście;

~ $ sudo service mysql restart

URI
źródło
0

Serwer MySQL na hoście AWS z systemem Ubuntu 16.04; mysql-workbench na laptopie Ubuntu 16.04; używa połączenia KeyPair.

Po skonfigurowaniu Testuj połączenie db działało. Ale rzeczywiste połączenie zawsze kończyło się niepowodzeniem z komunikatem takim jak ten przesłany przez Jonathana Leadersa. Sprawdziłem dziennik ~/.mysql/workbench/logi znalazłem kilka komunikatów „odmowa uprawnień” .

Teraz mogę zmusić mysql-workbench do pracy z: sudo mysql-workbench

A później mogę iść i chmodkatalogi wymagają pozwolenia.

Usman Suleman
źródło
2
Czy to odpowiedź na pytanie?
George Udosen