Wyszukiwanie w witrynie

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


Ten samouczek ma na celu wyjaśnienie niezbędnych kroków w celu rozwiązania problemu „BŁĄD 2003 (HY000): Nie można połączyć się z serwerem MySQL pod adresem „127.0.0.1” (111)”, który może wystąpić podczas próby uzyskać dostęp do serwera bazy danych MySQL.

Zanim przejdziesz dalej, jeśli jesteś użytkownikiem Linuksa i nie znasz MySQL/MariaDB, możesz rozważyć naukę MySQL/MariaDB dla początkujących – część 1 i 20 Polecenia MySQL (Mysqladmin) do administrowania bazami danych w Linuksa także.

Z drugiej strony, jeśli jesteś już średniozaawansowanym/doświadczonym użytkownikiem MySQL, możesz opanować 15 przydatnych wskazówek dotyczących dostrajania i optymalizacji wydajności MySQL/MariaDB.

Uwaga: w tym samouczku zakłada się, że masz już zainstalowany serwer bazy danych mysql.

Wracając do sedna sprawy, jakie są możliwe przyczyny tego błędu?

  1. Awaria sieci, szczególnie jeśli serwer bazy danych mysql działa na zdalnym hoście.
  2. Na wspomnianym hoście nie działa żaden serwer mysql.
  3. Zapora sieciowa blokuje połączenie TCP-IP lub z innych powiązanych powodów.

Poniżej znajdują się niezbędne kroki, aby sobie z tym poradzić.

1. Jeśli serwer bazy danych znajduje się na zdalnym komputerze, spróbuj przetestować łączność klient-serwer za pomocą polecenia ping, na przykład:

ping server_ip_address

Po nawiązaniu połączenia użyj poniższego polecenia ps, które wyświetla informacje o wybranych aktywnych procesach, wraz z poleceniami pipe i grep, aby sprawdzić, czy demon mysql jest działa w Twoim systemie.

ps -Af | grep mysqld

gdzie opcja:

  1. -A – aktywuje selekcję wszystkich procesów
  2. -f – włącza wyświetlanie w pełnym formacie

Jeśli poprzednie polecenie nie spowodowało żadnych wyników, uruchom usługę mysql w następujący sposób:

sudo systemctl start mysql.service
sudo systemctl start mariadb.service
OR
sudo /etc/init.d/mysqld start

Po uruchomieniu usługi mysql spróbuj uzyskać dostęp do serwera bazy danych:

mysql -u username -p -h host_address  

2. Jeśli nadal pojawia się ten sam błąd, określ port (domyślny to 3306), na którym nasłuchuje demon mysql, uruchamiając polecenie netstat.

netstat -lnp | grep mysql

gdzie opcje:

  1. -l – wyświetla porty nasłuchujące
  2. -n – umożliwia wyświetlanie adresów numerycznych
  3. -p – pokazuje PID i nazwę programu będącego właścicielem gniazda

Dlatego użyj opcji -P, aby określić port, który widzisz na powyższym wyjściu podczas uzyskiwania dostępu do serwera bazy danych:

mysql -u username -p -h host_address -P port

3. Jeśli wszystkie powyższe polecenia zostały pomyślnie wykonane, ale nadal widzisz błąd, otwórz plik konfiguracyjny mysql.

vi /etc/mysql/my.cnf
OR
vi /etc/mysql/mysql.conf.d/mysqld.cnf 

Poszukaj poniższej linii i skomentuj ją, używając znaku #:

bind-address = 127.0.0.1 

Zapisz plik i wyjdź, a następnie uruchom ponownie usługę mysql w następujący sposób:

sudo systemctl start mysql.service
sudo systemctl start mariadb.service
OR
sudo /etc/init.d/mysqld start

Jeśli jednak masz uruchomioną zaporę ogniową lub Iptables, spróbuj przejrzeć usługi zapory i otwórz port mysql, zakładając, że to zapora blokuje połączenia TCP-IP z twoim serwerem mysql.

To wszystko! Czy znasz inne metody lub masz sugestie dotyczące rozwiązania powyższego błędu połączenia MySQL? Daj nam znać, zostawiając komentarz za pomocą poniższego formularza opinii.