2013-05-10 16 views
14

Mam problem podczas próby połączenia się z bazą danych MySQL przy użyciu sterownika Windows OBDC. Istnieje wiele haseł wyszukiwania dotyczących oczywistych ... ludzie używają starych wersji, jednak nie jestem.Połączenie przy użyciu starego (pre-4.1.1) odrzuconego protokołu uwierzytelniania (opcja klienta "secure_auth" włączona)

mysqld jest na CentOS 6.4 32bit

./usr/libexec/mysqld Ver 5.1.69 for redhat-linux-gnu on i386 (Source distribution) 

enter image description here

Więc jestem w rozterce, aby zrozumieć, gdzie każdy pre protokół 4.1.1 pochodzi. Jakieś pomysły?

Odpowiedz

10

Zgaduję, że jeśli zadasz odpowiednie pytanie, łatwiej będzie znaleźć odpowiedź.

W tym przypadku problem "mój" dotyczy sposobu mieszania haseł i przechowywania ich w bazie danych. Wcześniejsze hasła były przechowywane z krótszym hashiem, który jest już przestarzały.

Kilka ważnych punktów:

mysql_upgrade nie może i nie uaktualnić haseł, ani nie ostrzega o tym w niektórych wersjach, patrz: http://bugs.mysql.com/bug.php?id=65461.

Nawet jeśli dysponujesz głównie najnowszym serwerem i klientami, wystarczy jeden starszy klient, aby utworzyć starsze hasło, a następnie będziesz miał problemy z tym kontem, niezależnie od tego, który klient spróbuje go użyć.

Różne wersje potraktowały sytuację inaczej, dzięki czemu możesz siedzieć na starszych hasłach w swojej bazie danych, a potem nagle, bez wyraźnego powodu, niektóre konta przestają działać ... wynika to z tego, jak różne wersje zdecydowały się obsłużyć sytuacja.

Nie można uaktualnić haseł. Musisz wiedzieć, czym one są i musisz je zmienić.

EDYCJA: Aby być bardziej zrozumiałym, należy zmienić hasło, które jest przechowywane z krótszym hash, za pomocą nowego klienta, który używa dłuższych skrótów. W ten sposób wpisujesz hasło do konta z dłuższym hashem, w którym to momencie nic nie powinno oznaczać próby uzyskania dostępu do konta. Jeśli problem powtarza się, powinieneś szukać starszych klientów w swojej witrynie, którzy wciąż piszą hasła o nieaktualnej długości skrótu.

+0

nie znał resetowania hasła w MySQL i znaleźć dobrą próbkę pod następującym adresem URL: http: // www.cyberciti.biz/faq/mysql-change-user-password/ – Jeff

+0

A jeśli nie lubisz linii poleceń [phpMyAdmin] (http://www.phpmyadmin.net/home_page/index.php), Nie chcę żyć bez. – tlum

+0

To w połączeniu z odpowiedzią STW poniżej postawiło mnie dobrze. – Jason

3

spróbuj zainstalować starą wersję sterownika 3.51.30: http://dev.mysql.com/downloads/connector/odbc/5.1.html#downloads To działa na moim Mysql Ver 5.0.24a Wspólnoty

+1

To naprawdę nie rozwiązuje problemu, a problem polega na nieaktualnej długości skrótu hasła, dla niektórych kont użytkowników, utworzonych przez te starsze wersje klienta. Obniżanie klientów jako poprawki jest nieszczere. Takie konta powinny być aktualizowane, aby używać bezpieczniejszego mieszania haseł. – tlum

+0

Mogę potwierdzić, że to działa. –

0

znalazłem inne rozwiązanie na wypadek gdyby ktoś uderza to - bardzo dziwne -

  1. Install 5.1 64-bitowy sterownik ODBC - sprawdź, czy połączenie ODBC działa samodzielnie, jeśli możesz się połączyć, powinieneś być w stanie po wykonaniu # 2
  2. Kliknij na serwerach połączonych - dostawcy - kliknij prawym przyciskiem myszy MSDASQL, kliknij Właściwości
    • odznacz "Zezwól na inprocess" - co jest dobre, jeśli nie musisz wstawiać pól TEXT i NTEXT.
  3. Utwórz połączoną połączenia z serwerem lub przetestować jeden zostałeś walczy z - lol

Gdy miałem „Pozwól procesowa” sprawdzone nadal mam błąd chociaż system ODBC DSN działało. Zakładam, ponieważ miałem mieszankę 5.2 (z serwerami, które działały dobrze) i 5.1 dla serwerów, które nie działały, SQL dzielił procesy, ponieważ sterownik 5.1 nie daje tego błędu.

+0

Uważam, że już to stwierdziłem poniżej. "Różne wersje potraktowały sytuację inaczej, więc ..." To nie jest rozwiązanie, to tylko zamiatanie problemu pod dywanem. Rozmiar skrótu jest przestarzały. Nowi klienci nie obsługują tego. Poprawka polega na przepisaniu hasła o nieaktualnej długości na obsługiwanej długości. Wszystko inne to tylko obejście, które może wrócić i ugryźć cię lub kogoś innego, raz za razem. LUB udało Ci się znaleźć nowy sposób generowania tego błędu, który jest całkowicie niezwiązany z omawianym problemem. – tlum

1

Miałem podobny komunikat o błędzie, gdy zdalnie próbuję uzyskać dostęp do mojej bazy danych MySQL. Korzystając z Directadmin, łatwo zmieniłem hasło do bazy danych MySql zgodnie z powyższymi sugestiami. To automatycznie wygenerowało hasło przy użyciu nowszej metody mieszania. Rozwiązało to natychmiast problem z połączeniem zdalnym.

9

MySQL Workbench 6.08 w Manage Server Connections, zakładce Connection, podmenu Advanced należy zaznaczyć pole "Użyj starego protokołu uwierzytelniania."

+1

to jest świetne dla MySQL Workbench - total bummer dla ODBC Connector – STW

+1

Pytanie w ogóle nie dotyczy środowiska MySQL Workbench. – PhilS

3

Wpadłem na to podczas korzystania ze złącza ODBC dla Windows, aby połączyć się z serwerem Percona 5.5. który ma wyłączoną secure_auth.

Z tego, co odkryłem, złącze ODBC, w przeciwieństwie do MySql Workbench, nie obsługuje opcji uwierzytelniania logowania używającego starych 16-bajtowych haseł. Istnieje zgłoszenie błędu dotyczące tego, ale wydaje się, że cesjonariusz jest/był zdezorientowany co do żądania funkcji (patrz bug #71234).

udało mi się zaktualizować logowanie mysql użyć nowego 41-bajtowy mieszania za pomocą tych poleceń:

set old_passwords=0; 
set password=password('yourpasswordhere'); 

Jak wspomniałem nasz serwer ma secure_auth niepełnosprawnych, która wydaje się powodować password() wrócić old_password() wyników. Uruchomienie metody set old_passwords=0; spowoduje, że metoda password() wygeneruje nowe 41-bajtowe skróty (na czas trwania sesji).

+0

Dzięki, to jest to, czego potrzebowałem, aby odpowiednio zresetować nasze hasła – Jason