Nie można połączyć się z serwerem MySQL, błąd 111 [zamknięty]


152

Zainstalowałem serwer mysql na linux box IP = 192.168.1.100, ale kiedy próbuję połączyć się z tym adresem, zawsze pojawia się błąd (111). ale użyj localhost i 127.0.0.1 jest OK.

piwo @ piwo-laptop # ifconfig | grep "inet addr"
          adres inet: 127.0.0.1 Maska: 255.0.0.0
          adres inet: 192.168.1.100 Bcast: 192.168.1.255 Maska: 255.255.255.0

piwo @ piwo-laptop # mysql -ubeer -pbeer -h192.168.1.100
BŁĄD 2003 (HY000): Nie można połączyć się z serwerem MySQL na '192.168.1.100' (111)

piwo @ piwo-laptop # mysql -ubeer -pbeer -hlocalhost
Witamy w monitorze MySQL. Polecenia kończą się na; lub \ g.
Twój identyfikator połączenia MySQL to 160
Wersja serwera: 5.1.31-1ubuntu2 (Ubuntu)

Wpisz „pomoc”; lub „\ h” w celu uzyskania pomocy. Wpisz „\ c”, aby wyczyścić bufor.

mysql> 

piwo @ piwo-laptop # mysql -ubeer -pbeer -h127.0.0.1
Witamy w monitorze MySQL. Polecenia kończą się na; lub \ g.
Twój identyfikator połączenia MySQL to 161
Wersja serwera: 5.1.31-1ubuntu2 (Ubuntu)

Wpisz „pomoc”; lub „\ h” w celu uzyskania pomocy. Wpisz „\ c”, aby wyczyścić bufor.

mysql> 

Podłącz z innego komputera to również błąd 111.

inny @ inny-laptop # mysql -ubeer -pbeer -h192.168.1.100
BŁĄD 2003 (HY000): Nie można połączyć się z serwerem MySQL na '192.168.1.100' (111)

Jaka jest różnica między use localhost / 127.0.0.1 a 192.168.1.100 w tym przypadku. Nie wiem, jak połączyć się z tą bazą danych z innego komputera.

Prosimy o pomoc. Podziękować.

Odpowiedzi:


263

Prawdopodobnie oznacza to, że Twój serwer MySQL nasłuchuje tylko interfejsu localhost.

Jeśli masz takie linie:

bind-address = 127.0.0.1

W my.cnfpliku konfiguracyjnym powinieneś je skomentować (dodać # na początku linii) i zrestartować MySQL.

sudo service mysql restart

Oczywiście, aby to zrobić, musisz być administratorem serwera.


6
oczywiście nie ma skip-networkinglinii ;-)
— Michael Krelin - haker

11
jak poznać mysql lokalizacja my.cnf: stackoverflow.com/questions/2482234/…
— Cyril Jacquart

2
ale co się stanie, gdy MOŻESZ się z nim połączyć ze środowiska roboczego mysql? mam ten sam problem.
— George Pamfilis

3
Postępowałem zgodnie z tym, co podano w odpowiedzi, ale nadal nie mogłem go uruchomić. Wtedy odkryłem, że parametr „adres-wiązania” znajduje się w pliku „/etc/mysql/mysql.conf.d/mysqld.cnf”. Skomentowałem to tam i zadziałało!
— Yahya

3
nowsze wersje ubuntu> = 16.04 mogą mieć tę linię w /etc/mysql/mysql.conf.d/myqld.cnf
— dellasavia

38

111 oznacza odrzucenie połączenia , co z kolei oznacza, że ​​mysqld nasłuchuje tylko localhostinterfejsu.

Aby to zmienić, możesz spojrzeć na bind-addresswartość w mysqldsekcji swojego my.cnfpliku.


Warto też sprawdzić, czy numer portu jest prawidłowy. Niezgodność :3306i :3307może również spowodować błąd 111.
— NXT

2
@NXT, nawet nie wiem, czy mysql może nasłuchiwać na różnych portach na różnych interfejsach, ale jest to bardzo mało prawdopodobny scenariusz (biorąc pod uwagę objawy w oryginalnym poście), nawet jeśli może. Wtedy mogą istnieć reguły firewalla itp. Jest na to wiele sposobów, ale prawdopodobieństwo jest inne…
— Michael Krelin - haker

Nie zawsze to oznacza. Moje my.cnfpliki nie mają żadnych linii bind-addressani skip-networking, a mimo to pojawia się ten sam błąd. Nie zainstalowano też zapory. Skończyły się pomysły.
— Deleet

Cóż, 111 zawsze oznacza odmowę połączenia :) A w tym konkretnym przypadku tylko localhost jest z powodu innych dowodów. Jeśli podasz więcej szczegółów na temat swojej sprawy, być może będę mógł pomóc? Ponadto, w zależności od obecnego systemu, konfiguracja prawdopodobnie jest rozproszona w wielu plikach.
— Michael Krelin - haker

10

Jeśli wszystkie poprzednie odpowiedzi nie przyniosły żadnego rozwiązania, sprawdź swoje uprawnienia użytkownika.

Jeśli możesz zalogować się jako rootmysql, powinieneś dodać to:

CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY  '***';
GRANT ALL PRIVILEGES ON * . * TO  'root'@'192.168.1.100' IDENTIFIED BY  '***' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

Następnie spróbuj połączyć się ponownie za pomocą mysql -ubeer -pbeer -h192.168.1.100. Powinno działać.


17
Nie sądzę, aby błąd związany z przywilejami użytkownika dał błąd 111.
— ufk

1
To faktycznie zadziałało i otrzymywałem również błąd 111.
— Borjante,

wygląda na to, że jest to lepsze rozwiązanie niż otwarcie mysql na całą sieć (y) przez zakomentowanie linii 127.0.0.1. powinno to być najlepsze rozwiązanie.
— nyxee

7

Jeśli używasz cPanel / WHM, upewnij się, że IP znajduje się na białej liście w zaporze. Będziesz także musiał dodać ten adres IP do listy zdalnych adresów IP SQL na koncie cPanel, z którym próbujesz się połączyć.


1
Dobrą informacją, aby sprawdzić, czy błąd jest zapora ogniową, jest to, że zwrócenie błędu zajmie trochę czasu. Jeśli MySQL powoduje problemy, odpowiedź powinna być prawie natychmiastowa.
— Ponury ...

Czy możesz wyjaśnić, jak to się robi?
— Użytkownik
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.