Jak rozwiązać problem błędu SSL podczas łączenia z serwerem MySQL?

Jak rozwiązać problem błędu SSL podczas łączenia z serwerem MySQL?
DR
  • Rejestracja: dni
  • Ostatnio: dni
1

Witam,

podczas próby połączenia z serwerem pojawia się następujący błąd:

Kopiuj
"InterfaceError: 2055: Lost connection to MySQL server at '127.0.0.1:3306', system error: 1 _ssl.c:499: error:1407742E:SSL   routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version"  

Żeby połączyć się z serwerem definiuje słownik:

Kopiuj
dbconfig={'host': 'localhost',
         'user': 'userone',
         'password': 'passwd',
         'database': 'dbsql',}

Następnie importuje sterownik bazy danych:

Kopiuj
import mysql.connector

I nawiązuje połączenie z serwerem:

Kopiuj
conn=mysql.connector.connect(**dbconfig)

No i tutaj pojawia się wspomniany wcześniej błąd.

Problem pojawia się na Pythonie 2.7. Na Pythonie 3.12 pojawia się również błąd ale innego typu. Jeśli nie znajdę rozwiązania tego problemu to wrzucę błąd, który pojawia się na wersji 3.12. Niestety stanąłem w miejscu i nie mogę ruszyć więc bardzo proszę o pomoc.

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
2

A spróbuj bez, SSL, (podaj mu jeszcze, ssl_disabled=True), jak nie musi być SSL'a. Albo spróbuj uzgodnić wersje, u siebie i na serwerze; sprawdź też czy w ogóle ten serwer odpowiada, np telnetem,

DR
  • Rejestracja: dni
  • Ostatnio: dni
0
lion137 napisał(a):

A spróbuj bez, SSL, (podaj mu jeszcze, ssl_disabled=True), jak nie musi być SSL'a. Albo spróbuj uzgodnić wersje, u siebie i na serwerze; sprawdź też czy w ogóle ten serwer odpowiada, np telenetem,

Spróbowałem bez SSL i nie pomogło. Próbuje też sprawdzić połączenie z serwerem ale nie wiem czy dobrze to robię. Może jeśli to nie problem to napisz mi jaką komendą w telnecie sprawdzić serwer na localhost. Ja wpisuję różne wersję i zawsze zwraca komunikat, że nie może nawiązać połączenia.

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
2
dretred napisał(a):

Ja wpisuję różne wersję i zawsze zwraca komunikat, że nie może nawiązać połączenia.

A jesteś przekonany że serwer mysql odpowiada? Jak postawiłeś bazę?

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
0

@dretred

Może jeśli to nie problem to napisz mi jaką komendą w telnecie sprawdzić serwer na localhost

telnet 127.0.0.1 3306

Edycja:

Spróbowałem bez SSL i nie pomogło

Ten sam błąd?

YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2384
5

"SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version", problemem jest warstwa TLS. TLSv1 jest dość starym protokołem
Podaj wersję connectora i wersję serwera mysql. Wówczas będzie można coś więcej powiedzieć.

Rozwiązanie w ciemno:

  • zaktualizować wersję sterownika bazodanowego dla pythona
  • ustawić na bazie TLSv1.2 (+/- TLSv1.3)
  • na kliencie we właściwościach dbconfig dodać tls_versions:["TLSv1.2", "TLSv1.3"].
    (dla TLSv1.3 masz nieco więcej zależności, ale może przypadkiem będą spełnione ;-) )

TLS v1 w sterowniku bazodanowym został wyłączony w 8.0.26, którą to informację można znaleźć w [release notesach dla 8.0.28](https://dev.mysql.com/doc/relnotes/connector-python/en/news-8-0-28.html

Może baza nadal działa z TLS v1 ? Albo sterownik jest stary i ma buga dla TLS v1 (jak jesteś ciekaw to przejrzyj release notes connectora z kontekście TLSv1).

Co do połączenia telnet/firewall/czy serwer bazodanowy działa itp. - można domniemywać, że połączenie zostało zestawione na poziomie TCP, z tego względu, że błąd zgłaszany dotyczy TLS, które jest w wyższej niż warstwa transportowa.
image

@Riddle obserwacja dotycząca Coyote - kiedyś Ctrl-C , Ctrl-V obrazka do edytora odpowiedzi działało. Dziś dostaję "Server Error".

DR
  • Rejestracja: dni
  • Ostatnio: dni
0
yarel napisał(a):

"SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version", problemem jest warstwa TLS. TLSv1 jest dość starym protokołem
Podaj wersję connectora i wersję serwera mysql. Wówczas będzie można coś więcej powiedzieć.

Rozwiązanie w ciemno:

  • zaktualizować wersję sterownika bazodanowego dla pythona
  • ustawić na bazie TLSv1.2 (+/- TLSv1.3)
  • na kliencie we właściwościach dbconfig dodać tls_versions:["TLSv1.2", "TLSv1.3"].
    (dla TLSv1.3 masz nieco więcej zależności, ale może przypadkiem będą spełnione ;-) )

TLS v1 w sterowniku bazodanowym został wyłączony w 8.0.26, którą to informację można znaleźć w [release notesach dla 8.0.28](https://dev.mysql.com/doc/relnotes/connector-python/en/news-8-0-28.html

Może baza nadal działa z TLS v1 ? Albo sterownik jest stary i ma buga dla TLS v1 (jak jesteś ciekaw to przejrzyj release notes connectora z kontekście TLSv1).

Co do połączenia telnet/firewall/czy serwer bazodanowy działa itp. - można domniemywać, że połączenie zostało zestawione na poziomie TCP, z tego względu, że błąd zgłaszany dotyczy TLS, które jest w wyższej niż warstwa transportowa.
image

@Riddle obserwacja dotycząca Coyote - kiedyś Ctrl-C , Ctrl-V obrazka do edytora odpowiedzi działało. Dziś dostaję "Server Error".

Przepraszam bardzo za zamieszanie ale w weekend niespodziewanie zmieniłem komputer i miałem przy nim trochę pracy dlatego nie odpowiadałem. W każdym razie po zainstalowaniu softwaru na kompie teraz pojawia się inny komunikat i nie wiem czy wrzucić go w nowym temacie czy dorzucić go tutaj. Dziękuje za wasze odpowiedzi i przepraszam, że was fatygowałem ale u mnie sytuacja wyniknęła z zaskoczenia. Proszę o podpowiedź gdzie opisać nową sytuację bo tematyka się pokrywa ale tak myślę, że w nowym temacie będą większe szanse, że dotrze do większej liczby użytkowników ale jednocześnie nie chcę łamać zasad panujących na grupie, których za dobrze nie znam. Proszę o podpowiedź.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.