BŁĄD 2003 (HY000): Nie można połączyć się z serwerem MySQL na '127.0.0.1' (111)

135

Używam następującego polecenia:

mysql -u root -h 127.0.0.1 -p

a komunikat o błędzie to:

ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)

Kto może mi pomóc to naprawić?

Charlie Epps
źródło
3
Czy demon mysql jest uruchomiony? Czy masz firewall? Czy możesz telnet do mysql, domyślny port to 306, więc - telnet localhost 3306
mmmmmm
demon mysql jest uruchomiony. Jestem pewien.
Charlie Epps
1
Czy to tylko ja, czy jeśli łączysz się z lokalnym serwerem mysql, nie musisz określać hosta, np. Mysql -u root -p powinno działać?
RMcLeod
żeby się upewnić, że próbujesz połączyć się lokalnie z serwerem db?
John Kane,
Świeżo zainstalowałem mysql na Ubuntu-12.04.2. Wersja to 14.14, dystrybucja 5.5.32, dla debian-linux-gnu (x86_64) używającego readline 6.2, jej domyślna konfiguracja nie zawiera opcji „skip-networking”. Więc nie napotkasz błędu w tej wersji.

Odpowiedzi:

220

Jeśli używasz ubuntu, musisz wykonać następujące kroki, aby uniknąć tego błędu (jeśli nie ma włączonej replikacji):

  1. uruchom polecenie vim /etc/mysql/my.cnf
  2. komentarz bind-address = 127.0.0.1za pomocą symbolu #
  3. zrestartuj raz serwer mysql.

Aktualizacja

W kroku 1, jeśli nie możesz znaleźć bind-addressw my.cnfpliku, poszukaj go w /etc/mysql/mysql.conf.d/mysqld.cnfpliku.

Aktualizacja w przypadku włączonej replikacji MySQL

Spróbuj połączyć się z serwerem MySQL, na IPktórym serwer MySQL jest powiązany w „my.cnf instead oflocalhost lub 127.0.0.1”.

Justin Vincent
źródło
8
Dziękuję Ci!!! Próbowałem to rozgryźć przez długi czas! Zakomentowałem tę linię, zapisałem plik i uruchomiłem service mysql restart. A teraz działa!
Ryan
W moim przypadku miałem adres serwera zamiast 127.0.0.1 dla adresu powiązania. Jeśli tak jest w Twoim przypadku, musisz to również skomentować.
Vlad Schnakovszki,
4
Nie ma bind-address = 127.0.0.1w/etc/mysql/my.cnf
RegarBoy
6
@developer, moje znalazłem tutaj: /etc/mysql/mysql.conf.d/mysqld.cnf
raz
Zmieniłem bind-address = <adres IP głównego serwera>, ale nie mogę ponownie uruchomić mysql.
Avi Kehat
14

Spróbuj localhostzamiast 127.0.0.1łączyć się lub w swoim connection-config. Pracował dla mnie na serwerze Debian Squeeze

grex_e
źródło
FYI, jeśli określisz localhost, to mówi Mysql, aby łączył się przez gniazdo unix (/var/run/mysqld/mysqld.sock na ubuntu), a nie przez gniazdo TCP.
Duke
8

Dzieje się tak, gdy zapomnisz uruchomić bazę danych przed połączeniem się z nią:

mysql.server start

następnie

mysql -u root -p -h 127.0.0.1
Henz
źródło
w terminalu na komputerach Mac i Linux. Wydaje mi się, że tak samo jest w systemie Windows CMD, ale nie jestem pewien.
Henry,
Musiałem uruchomić serwer MySQL sudo service mysqld startw mojej instancji AWS EC2 z MySQL Community Server.
harshainfo
6

W moim przypadku (zdalne połączenie) pomogło w wyłączeniu firewalla na serwerze.

service iptables stop
Bunyk
źródło
@ram Prawdopodobnie używasz innej zapory. Lub Twoim problemem nie jest w ogóle zapora ogniowa. Sprawdź dokumentację swojej dystrybucji Linuksa.
Bunyk
1
@ram tryservice firewalld stop
Maxim Mazurok,
1
MySQL zazwyczaj działa na porcie 3306, więc dodaj to do swojej zapory
kurdtpage
6

Ten problem może wystąpić, ponieważ serwer MySQL nie jest zainstalowany i nie działa. Aby to zrobić, uruchom wiersz polecenia jako administrator i wprowadź polecenie:

"C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin\mysqld" --install

Jeśli pojawi się komunikat „usługa została pomyślnie zainstalowana”, musisz uruchomić usługę MySQL. Aby to zrobić: przejdź do okna Usługi (Menedżer zadań -> Usługi -> Otwórz usługi) Wyszukaj MySQL i uruchom go z górnego paska nawigacyjnego. Wtedy, jeśli spróbujesz otworzyć mysql.exe, zadziała.

S.Roshanth
źródło
2
Mały błąd, cd "C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin" a potem mysqld --install. Ponadto numer serwera zależy od pobierania.
Dejazmach
To rozwiązało mój problem
Steffi Keran Rani J
6

spójrz na my.cnfplik, jeśli zawiera [client]sekcję, a portjest inny niż prawdziwy port nasłuchiwania (domyślnie 3306), musisz połączyć się z serwerem z jawnym parametrem -P 3306, np.

mysql -u root -h 127.0.0.1 -p -P 3306

Yu Jiaao
źródło
gdzie mogę przeszukać my.cnf. nie ma go na serwerze wamp, w moim laptopie
Deepak Keynes,
W systemie Windows zwykle wywołuje „my.ini”
Yu Jiaao,
Dla mnie problemem był port. Dzięki
Chandra Eskay,
0

Musisz zmienić parametr bind-address na 127.0.0.1 w pliku konfiguracyjnym mysql (my.ini lub my.cnf) lub użyć tego, który jest tam zdefiniowany.

Jeśli to nie zadziała, sprawdź, czy usługa mysql faktycznie działa.

nkr1pt
źródło
1
Dodałem wiersz „adres-wiązania = 127.0.0.1” do pliku my.cnf. Ale to nie działa.
Charlie Epps
2
Jeśli ta linia jest obecna, mysql będzie nasłuchiwać TYLKO podanego adresu. Aby umożliwić zdalny dostęp, należy USUNĄĆ tę linię. Bądź świadomy konsekwencji dla bezpieczeństwa.
webkraller
dodanie bind-address =127.0.0.1w my.cnf wyłącza zdalne połączenie z bazą danych. Więc nawet jeśli to zadziała (a nie jest) - to nie jest dobre rozwiązanie.
alfasin
Adres wiązania powinien wynosić 0.0.0.0, chyba że nie chcesz, aby ktokolwiek inny się łączył.
Markiz Lorne
0

Okrywać używasz na innym niż domyślny portu, można spróbować użyć --port=<port num> dostarczonych --skip-networkingISnot enabled.

KDAS
źródło
0

Po prostu mam ten problem ... działa w Win7 i serwerze wamp ... po przeczytaniu tego

Okazało się, że problem spowodowała zapora antywirusowa.

Adhie_x
źródło
0

Miałem również do czynienia z tym samym problemem. Poniższe pomogły mi rozwiązać problem, przejdź do panelu sterowania-> Narzędzia administracyjne -> usługi w tym miejscu z pewnością zobaczysz usługę MySQL: kliknij prawym przyciskiem myszy i powiedz start (wymuś start).

Mightian
źródło
0

Dla użytkowników Dockera - podczas próby połączenia lokalnego sql przy użyciu,mysql -u root -h 127.0.0.1 -pa Twoja baza danych działa nakontenerze Docker , upewnij się, że usługa mysql jest uruchomiona (sprawdź, czy używasz,docker psa także sprawdź, czy jesteś w odpowiednim porcie), jeśli kontener jest w dół pojawi się błąd połączenia.

Najlepszą praktyką jest ustawienie /etc/hostsadresów IP na komputerze:

127.0.0.1 db.local

i prowadząc to mysql -u root -h db.local -p

avivamg
źródło
0

Nie wyłączaj iptables i nie otwieraj portu 3306.

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

lub sudo ufw allow 3306jeśli używasz ufw.

check: netstat -lnp | grep mysqlpowinieneś coś takiego dostać:

cp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      2048/mysqld         
tcp6       0      0 :::33060                :::*                    LISTEN      2048/mysqld         
unix  2      [ ACC ]     STREAM     LISTENING     514961   2048/mysqld          /var/run/mysqld/mysqld.sock
unix  2      [ ACC ]     STREAM     LISTENING     514987   2048/mysqld          /var/run/mysqld/mysqlx.sock

jeśli masz null, usuń # przed port = 3306 w pliku cnf.

Karol Preiskorn
źródło
0

Upewnij się, że serwer MySql działa na hoście lokalnym.

W systemie Linux

Aby sprawdzić, czy serwer MySql działa:

sudo service mysql status

Aby uruchomić serwer MySql:

sudo service mysql start

W systemie Windows

Aby sprawdzić, czy serwer MySql działa:

C:\Windows\system32>net start

Jeśli MySql nie ma na liście, musisz uruchomić / uruchomić MySql.

Aby uruchomić serwer MySql:

C:\Windows\system32>net start mysql

Mam nadzieję że to pomoże.

Safiqur Rhaman
źródło
-1

Zmieniłem katalog instalacyjny przy ponownej instalacji i zadziałało.

Gursimran Pannu
źródło
-2

po prostu restartuję mój serwer mysql i problem rozwiązany w windows net stop MySQL następnie net start MySQl ubuntu linux sudo service start mysql

jasim
źródło