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?
- Awaria sieci, szczególnie jeśli serwer bazy danych mysql działa na zdalnym hoście.
- Na wspomnianym hoście nie działa żaden serwer mysql.
- 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:
-A
– aktywuje selekcję wszystkich procesów-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:
-l
– wyświetla porty nasłuchujące-n
– umożliwia wyświetlanie adresów numerycznych-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.