Otrzymuję błąd:
„Utracono połączenie z serwerem MySQL podczas odczytu początkowego pakietu komunikacyjnego, błąd systemu: 0”
podczas gdy mam zamiar podłączyć moją bazę danych.
Jeśli używam localhost, wszystko działa dobrze. Ale kiedy używam mojego rzeczywistego adresu IP, jak poniżej, pojawia się błąd:
mysql_connect("202.131.xxx.106:xxxx", "xxxx", "xxxxx") or die(mysql_error());
Otwórz plik konfiguracyjny mysql o nazwie my.cnf i spróbuj znaleźć „adres-wiązania”, w tym miejscu zastąp ustawienie (127.0.0.1 OR localhost) adresem IP serwera na żywo (IP, którego używasz w funkcji mysql_connect)
To zdecydowanie rozwiąże problem.
Dzięki
źródło
127.0.0.1
jeśli ma to zastosowanie, aby bezpośredni dostęp z innych hostów nie był możliwy. Zapobiega to zdalnym atakom siłowym i nie ujawnia potencjalnych problemów z bezpieczeństwem w sieci. Jeśli twoja aplikacja znajduje się na tym samym komputerze (co jest bardzo powszechną konfiguracją hostingu), użyj127.0.0.1
odp.localhost
jako host mysql i będzie działać w taki sam sposób, jak powiązanie usługi z zewnętrznym interfejsem i użycie go jako hosta mysql. Jeśli Twoja aplikacja znajduje się w innym miejscu, użyj sieci wewnętrznej, jeśli to możliwe.1) Zezwól na zdalne połączenie z MySQL. Edytuj plik:
Linia komentarza:
Uruchom ponownie MySQL:
2) Utwórz użytkownika do zdalnego połączenia.
3) W moim przypadku muszę połączyć się zdalnie z Windowsa do maszyny VirtualBox z Ubuntu. Więc muszę zezwolić na port 3306 w iptables:
źródło
FLUSH PRIVILEGES
po utworzeniu nowego użytkownika.Miałem ten problem podczas konfigurowania nowego serwera podrzędnego. Okazało się, że w
/etc/hosts.allow
pliku serwera głównego brakuje adresu IP serwera slave . Dodano adres IP i pozwolił mi połączyć się z serwerem głównym.Zauważ, że używam
hosts.allow
ihosts.deny
do kontrolowania dostępu.źródło
allow
kiedydeny
maALL: ALL
...Miałem ten problem i skończyło się na tym, że poprzedni administrator systemu zmienił port, na którym działa MySQL. MySQL Workbench próbował połączyć się z domyślnym 3306, ale serwer działał na 20300.
źródło
Problem w moim przypadku polegał na tym, że MySQL wiązał się tylko z lo w systemie Linux. w celu rozwiązania problemu wyedytowałem plik my.cnf (znajdujący się w /etc/mysql/my.cnf) usuwając wiersz bind-address = 127.0.0.1
pozwala to mysql na powiązanie z dowolnym interfejsem sieciowym
źródło
Ten błąd wystąpił podczas próby połączenia się z Google Cloud SQL za pomocą MySQL Workbench 6.3.
Po krótkich poszukiwaniach odkryłem, że mój adres IP został zmieniony przez dostawcę Internetu i nie został on dopuszczony do Cloud SQL.
Autoryzowałem to i wróciłem do pracy.
źródło
Napotkałem dokładnie ten sam błąd podczas łączenia się z MySQL. Oto jak to naprawiłem. Mój plik konfiguracyjny /etc/my.cnf miał wartość bind-address ustawioną na adres IP serwera. Trzeba było to zrobić, aby skonfigurować replikację. W każdym razie rozwiązałem to, robiąc dwie rzeczy:
na przykład
źródło
Problem polegał na tym, że zapytania DNS były blokowane przez FW w podsieci. Rozwiązaniem było wyłączenie wyszukiwania DNS w MySQL.
źródło
Właśnie skonfigurowałem mysql na skrzynce z systemem Windows. Otrzymałem błąd OP podczas próby połączenia się z klientem Navicat MySql na tym samym urządzeniu. Musiałem określić 127.0.0.1 jako hosta i to dostało.
localhost lub rzeczywisty adres IP serwerów nie działa.
źródło
Błąd oznacza, że nie otrzymał odpowiedzi z portu, na którym powinien znaleźć serwer. Przyczyny mogą być różne, od skontaktowania się z niewłaściwą maszyną (z kilku powodów) do braku połączenia serwera z oczekiwanym portem.
Sprawdź, do którego portu jest przypisany twój serwer w /etc/mysql/my.cnf. Czy to odpowiada temu, co jest w twojej instrukcji connect. Jeśli pasują, spróbuj połączyć się z mysql z samego serwera iz wiersza poleceń maszyny, na której uruchamiasz klienta. Jeśli działa w jednym miejscu, a nie w innym, możesz mieć problem z konfiguracją zapory / routera.
źródło
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (61)
, a nieLost connection to MySQL server
wiadomość.w moim przypadku miałem ALL: ALL w hosts.deny. Zmiana tego na ALL: PARANOID rozwiązał mój problem podczas łączenia przez ssh
źródło
Problem był dla mnie dość głupi.
Kiedyś otrzymywałem ten sam problem na maszynie AWS EC2 Ubuntu (MariaDB jest na razie instalowana lokalnie), więc próbowałem wykonać tunelowanie SSH i miałem ten sam problem. Więc próbowałem przejść przez tunel ssh nad terminalem:
I powiedział mi to:
Zmieniłem użytkownika ssh z roota na ubuntu, tak jak moja konfiguracja ssh i połączyłem się dobrze.
Sprawdź więc swojego użytkownika łączącego się przez SSH.
Nadzorowałem to, więc to też pół godziny mojego czasu, więc mam nadzieję, że ci się to przyda.
źródło
Dla mnie plik konfiguracyjny został znaleziony "/etc/mysql/mysql.conf.d/mysqld.cnf". Komentowanie adresu wiązania załatwiło sprawę.
Jak widzimy tutaj: zamiast przeskakiwania sieci domyślnie nasłuchuje się tylko na hoście lokalnym, który jest bardziej kompatybilny i nie mniej bezpieczny.
źródło
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
i zamiast tegobind-address = 111.112.113.114
użyłembind-address = 127.0.0.1
. Ustawienia tunelu SSH są ustawione zgodnie z opisem na hostpresto.com/community/tutorials/ ... Dobra robota! Dzięki!Wpadłem na ten sam problem, Bind Address tam iz powrotem bezskutecznie. Rozwiązaniem dla mnie było spłukiwanie przywilejów .
źródło
Dla mnie ustawienie
bind-address = 0.0.0.0
wmysql/my.cnf
zadziałało. Zasadniczo nasłuchuje wtedy wszystkich adresów (ale nadal jednego portu).I nie zapomnij zrestartować serwera:
systemctl restart mysql
źródło
Po prostu miałem ten sam problem, ale w moim przypadku rozwiązałem go
źródło
Jeszcze jeden powód ...
Wpadłem na serwer Ubuntu, na którym wszystko zostało dostosowane i nie mogłem się połączyć z powodu tego samego błędu.
To ustawienie było w środku
/etc/ssh/sshd_config
Po zmianie w
Udało mi się połączyć zdalnie z moją bazą danych MySQL
źródło
Próbuję podłączyć mój kontener DB Docker na Ubuntu 18.04, ten sam problem.
Najpierw sprawdź urządzenie, uruchamiając,
nmcli dev
aby sprawdzić, czydocker0
jest podłączone.Jeśli nie jest podłączony, spróbuj ponownie uruchomić usługę docker:
sudo service docker restart
źródło
W moim przypadku był to uniwersytecki port blokujący WiFi 3306. Udało mi się połączyć za pomocą mobilnego hotspotu.
Zmień na mobilny punkt dostępu lub inną sieć i jeśli tam działa, wiesz, że oryginalna sieć blokuje port 3306. Jeśli ten sam błąd występuje w więcej niż jednej sieci, oznacza to, że jest on specyficzny dla twojego komputera.
źródło
Firewalld
blokuje adres IP. aby dać dostęp, użyj tych poleceń:firewall-cmd --permanent --zone = trust --add-source = TWÓJ_IP / 32
firewall-cmd --permanent --zone = trust --add-port = 3306 / tcp
firewall-cmd --reload
źródło
Łącząc się zdalnie z MySQL wyskoczył mi błąd. Miałem to ostrzeżenie w
/var/log/mysqld.log
:Właśnie dodałem tę linię do
/etc/hosts
pliku:Problem rozwiązany! Nieużywanie
skip-name-resolve
powodowało błędy w mojej aplikacji lokalnej podczas łączenia się z MySQL.źródło
Miałem identyczny problem. Aby to naprawić, właśnie zmieniłem hosta z localhost: 3306 na po prostu localhost. Więc błąd może się pojawić, gdy wybierzesz niewłaściwy port do połączenia. Lepiej pozostawić to domyślne.
źródło
-P 3306
Problem, który znalazłem w katalogu bazy danych do odczytu i zapisu. Po prostu upewnij się, że Twoja aplikacja może rw pliki w lokalizacji db. Wypróbuj chmod 777 do testów.
źródło
Miałem ten sam problem. Sprawdziłem i próbowałem ustawić AllowTcpForwarding Tak, ale brakowało go w moim sshd_config, więc nie ma pomocy. Nie zmieniłem sshd_config ani my.cnf. Upewnij się, że nazwa hosta ssh NIE jest taka sama jak nazwa hosta mysql (użyj localhost).
W środowisku roboczym wybierz +, aby dodać nowe połączenie i ustaw następujące opcje:
Testuj połączenie. Powinno się udać, a następnie naciśnij OK, Viola!
źródło
Jeśli adres-wiązania nie jest obecny w pliku konfiguracyjnym, a mysql jest hostowany na instancji AWS, sprawdź swoją grupę bezpieczeństwa. W idealnych warunkach reguły przychodzące powinny akceptować wszystkie połączenia z portu 3306, a reguła wychodząca powinna odpowiadać na wszystkie prawidłowe adresy IP.
źródło
Zrobiłem poniżej 3 kroki, a następnie pracowałem dla mnie.
bind-address = "YOUR MACHINE IP"
wmy.cnf
pliku w /etc/my.cnfUruchom ponownie usługę za pomocą polecenia:
service httpd restart
GRANT ALL PRIVILEGES ON yourDB.* TO 'username'@'YOUR_APPLICATION_IP' IDENTIFIED BY 'YPUR_PASSWORD' WITH GRANT OPTION;
źródło
Miałem podobny błąd (łączenie się z MYSQL na aws przez MYSql Workbench). Kiedyś łączyłem się dobrze wcześniej i nagle przestało działać i po prostu nie działało ponownie). Moje połączenie było zabezpieczone przez SSH przez plik klucza.
Okazuje się, że upłynął limit czasu. Więc zwiększyłem limit czasu połączenia SQL do 30 sekund (z domyślnych 10) i dobrze było iść ponownie. rzeczy do wypróbowania (jeśli jesteś w podobnej konfiguracji)
mysql -u [username] -p [database]
? Spowoduje to sprawdzenie problemów z prawami użytkownika itp.źródło
Ograniczona przestrzeń dyskowa może spowodować ten błąd.
Sprawdź miejsce na dysku
Spróbuj zwiększyć ilość miejsca, jeśli jest 100% używanych dysków.
W moim przypadku: mam Vagrant (8.0.1) box (Ubuntu 16.04) Moja pojemność dysku mysql wynosiła 10 GB, zwiększyłem ją do 20 GB
Następnie uruchom ponownie mysql
źródło
Jeśli napotkasz ten błąd podczas łączenia się ze zdalnego, przejdź do opcji zdalnego mysql w cpanelu, a następnie dodaj% w Host (dozwolone są symbole wieloznaczne%).
źródło