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ć.

wearetherock
źródło

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.

Pascal MARTIN
źródło
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.

Michael Krelin - haker
źródło
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ć.

xnome
źródło
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ć.

Dragos.
źródło
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