Przydatne wskazówki dotyczące rozwiązywania problemów typowych błędów w MySQL

Przydatne wskazówki dotyczące rozwiązywania problemów typowych błędów w MySQL

Mysql jest szeroko stosowanym systemem zarządzania relacyjnymi bazami danych open source (RDMS) posiadany przez Wyrocznia. Przez lata był domyślnym wyborem dla aplikacji internetowych i nadal pozostaje popularny w porównaniu z innymi silnikami bazy danych.

Przeczytaj także: Jak zainstalować najnowszy MySQL na RHEL/Centos i Fedora

Mysql został zaprojektowany i zoptymalizowany pod kątem aplikacji internetowych - tworzy integralną część głównych aplikacji internetowych, takich jak Facebook, Świergot, Wikipedia, Youtube, i wiele innych.

Czy Twoja witryna lub aplikacja internetowa jest zasilana przez Mysql? W tym szczegółowym artykule wyjaśnimy, jak rozwiązywać problemy z problemami i typowymi błędami Mysql Serwer bazy danych. Opiszmy, jak określić przyczyny problemów i co zrobić, aby je rozwiązać.

1. Nie można połączyć się z lokalnym serwerem MySQL

Jednym z powszechnych błędów połączenia serwera w MySQL jest „Błąd 2002 (HY000): Nie można połączyć się z lokalnym serwerem MySQL za pośrednictwem gniazda '/var/run/mysqld/mysqld.Sock '(2)".

Nie można połączyć się z lokalnym serwerem MySQL

Ten błąd wskazuje, że nie ma Mysql serwer (Mysqld) działający w systemie hosta lub że określiłeś niewłaściwą nazwę pliku gniazda UNIX lub TCP/IP port podczas próby połączenia z serwerem.

Upewnij się, że serwer jest uruchomiony, sprawdzając nazwany proces Mysqld na hosta serwera bazy danych za pomocą polecenia PS i polecenia GREP razem, jak pokazano.

$ ps xa | GREP MYSQLD | grep -v mysqld 

Jeśli powyższe polecenia nie pokazują wyjścia, wówczas serwer bazy danych nie działa. Dlatego klient nie może się z tym połączyć. Aby uruchomić serwer, uruchom następujące polecenie SystemCtl.

$ sudo systemctl start mysql #debian/ubuntu $ sudo systemctl start mysqld #rhel/centos/fedora 

Aby zweryfikować Mysql Status usługi, użyj następującego polecenia.

$ sudo SystemCtl Status Mysql #Debian/Ubuntu $ sudo Systemctl Status Mysqld #Rhel/Centos/Fedora 
Sprawdź status MySQL

Ze wyjścia powyższego polecenia, Mysql Usługa zawiodła. W takim przypadku możesz spróbować go zrestartować i ponownie sprawdzić jego status.

$ sudo systemctl restart mysql $ sudo systemctl status mysql 
Uruchom ponownie MySQL i sprawdź status

Ponadto, jeśli serwer jest uruchomiony, jak pokazano przez następujące polecenie, ale nadal widzisz powyższy błąd, powinieneś również sprawdzić, czy TCP/IP Port jest blokowany przez zaporę lub dowolną usługę blokowania portu.

$ ps xa | GREP MYSQLD | grep -v mysqld 

Aby znaleźć port, na którym serwer słucha, użyj polecenia NetStat, jak pokazano.

$ sudo netstat -tlpn | Grep „mysql” 

2. Nie można połączyć się z serwerem MySQL

Kolejnym powszechnie napotykanym błędem połączenia jest „(2003) nie można połączyć się z serwerem MySQL na „serwerze” (10061)”, Co oznacza, że ​​połączenie sieciowe zostało odrzucone.

Tutaj zacznij od sprawdzenia, że ​​istnieje Mysql serwer działający w systemie, jak pokazano powyżej. Upewnij się również, że serwer ma włączone połączenia sieciowe i że port sieciowy, którego używasz do podłączenia, to ten skonfigurowany na serwerze.

Inne popularne błędy, które prawdopodobnie napotkasz, próbując połączyć się z serwerem MySQL, to:

Błąd 2003: Nie można połączyć się z serwerem MySQL na „nazwa_ hosta” (111) Błąd 2002: Nie można połączyć się z lokalnym serwerem MySQL za pośrednictwem gniazda '/tmp/mysql.Sock '(111) 

Te błędy wskazują, że serwer może być uruchomiony, jednak próbujesz się połączyć za pomocą TCP/IP Port, nazwany Pipe lub plik gniazda Unixa inny niż ten, na którym słucha serwer.

3. Dostęp do błędów w MySQL

W Mysql, Konto użytkownika jest zdefiniowane w kategoriach nazwa użytkownika oraz hosta klienta lub hosty, z których użytkownik może połączyć się z serwerem. Ponadto konto może również mieć poświadczenia uwierzytelnienia, takie jak hasło.

Chociaż istnieje wiele różnych przyczyn „Brak dostępu„Błędy, jedna z powszechnych przyczyn dotyczy kont MySQL, z których serwer zezwala na programy klientów podczas łączenia. To wskazuje nazwa użytkownika określony w połączeniu nie ma uprawnień do dostępu do bazy danych.

MySQL umożliwia tworzenie kont, które umożliwiają użytkownikom łączenie się z serwerem i dostęp do danych zarządzanych przez serwer. W związku z tym, jeśli napotkasz Dostęp do błędu, Sprawdź, czy konto użytkownika może łączyć się z serwerem za pośrednictwem używanego programu klienta, a może hosta, z którego pochodzi połączenie.

Możesz zobaczyć, jakie uprawnienia ma dane konto, uruchamiając Pokaż dotacje polecenie jak pokazano.

> Pokaż dotacje dla „Tecmint”@„LocalHost”; 

Możesz przyznać uprawnienia dla konkretnego użytkownika w określonej bazie danych na zdalny adres IP za pomocą następujących poleceń w powładzie MySQL.

> Udzień wszystkie przywileje na *.test_db do „Tecmint”@'192.168.0.100 '; > Przywileje spłukające; 

Ponadto, Dostęp do błędy może również wynikać z problemów z łączeniem się z MySQL, patrz wcześniej wyjaśnione błędy.

4. Utracone połączenie z serwerem MySQL

Możesz napotkać ten błąd z jednego z następujących powodów: Słaba łączność sieciowa, czas połączenia minął Lub Problem z Blob wartości, które są większe niż max_allowed_packet. W przypadku problemu z połączeniem sieciowym upewnij się, że masz dobre połączenie sieciowe, zwłaszcza jeśli uzyskujesz dostęp do zdalnego serwera bazy danych.

Jeśli to jest czas połączenia minął problem, szczególnie kiedy Mysql próbuje użyć początkowego połączenia z serwerem, zwiększyć wartość connect_timeout parametr. Ale w przypadku Wartości Blob które są większe niż max_allowed_packet, Musisz ustawić wyższą wartość dla max_allowed_packet w Twoim /itp./mój.CNF plik konfiguracyjny pod [Mysqld] Lub [klient] sekcja jak pokazano.

[mysqld] connect_timeout = 100 max_allowed_packet = 500m 

Jeśli Mysql plik konfiguracyjny nie jest dla Ciebie dostępny, a następnie możesz ustawić tę wartość za pomocą następującego polecenia w powładzie MySQL.

> Ustaw globalny connect_timeout = 100; > Ustaw globalny maks ._allowed_packet = 524288000; 

5. Zbyt wiele połączeń mysql

W przypadku Mysql Klient napotyka „za dużo połączeń„Błąd oznacza, że ​​wszystkie dostępne połączenia są używane przez innych klientów. Liczba połączeń (domyślnie jest 151) jest kontrolowany przez Max_Connections zmienna systemowa; Możesz rozwiązać problem, zwiększając jego wartość, aby umożliwić więcej połączeń w Twoim /itp./mój.CNF plik konfiguracyjny.

[Mysqld] max_connections = 1000 

6. Bez pamięci mysql

W przypadku uruchomienia zapytania za pomocą Mysql Program klienta i napotkanie danego błędu, oznacza to, że MySQL nie ma wystarczającej pamięci, aby przechowywać cały wynik zapytania.

Pierwszym krokiem jest upewnienie się, że zapytanie jest poprawne, jeśli tak, to wykonaj następujące czynności:

  • Jeśli używasz bezpośrednio klienta MySQL, zacznij od tego --Szybki przełącznik, Aby wyłączyć buforowane wyniki lub
  • Jeśli używasz Myodbc Sterownik, interfejs użytkownika konfiguracji (interfejs użytkownika) ma zaawansowaną kartę dla flag. Sprawdzać "Nie buforuj wyniku".

Kolejnym świetnym narzędziem jest, Mysql Tuner - Przydatny skrypt, który połączy się z działającym serwerem MySQL i podaje sugestie dotyczące tego, jak można go skonfigurować dla wyższej wydajności.

$ sudo apt-get instaluj mysqltuner #debian/ubuntu $ sudo yum instaluj mysqltuner #rhel/centos/fedora $ mysqltuner 

W przypadku wskazówek optymalizacji MySQL i dostrajania wydajności Przeczytaj nasz artykuł: 15 Przydatne MySQL/MARIADB Wskazówki dotyczące dostrojenia i optymalizacji.

7. Mysql ciągle się rozbija

Jeśli napotkasz ten problem, powinieneś spróbować dowiedzieć się, czy problemem jest to, że Mysql serwer umiera lub czy jest to klient z problemem. Zauważ, że wiele awarii serwerów jest spowodowanych przez uszkodzone pliki danych lub pliki indeksu.

Możesz sprawdzić status serwera, aby ustalić, jak długo jest uruchomiony.

$ sudo SystemCtl Status Mysql #Debian/Ubuntu $ sudo Systemctl Status Mysqld #Rhel/Centos/Fedora 

Alternatywnie, uruchom następujące polecenie MySQLadmin, aby znaleźć czas pracy MySQL Server.

$ sudo mysqladmin wersja -p 
Znajdź czas pracy MySQL Server

Inne rozwiązania obejmują między innymi zatrzymanie Mysql serwer i włączanie debugowania, a następnie rozpocznij usługi ponownie. Możesz spróbować stworzyć przypadek testowy, którego można użyć do powtórzenia problemu. Ponadto otwórz dodatkowe okno terminala i uruchom następujące polecenie, aby wyświetlić statystyki procesu MySQL podczas uruchamiania innych zapytania:

$ sudo mysqladmin -i 5 status lub $ sudo mysqladmin -i 5 -r status 

Podsumowując: określenie, co powoduje problem lub błąd

Chociaż spojrzeliśmy na jakieś wspólne Mysql Problemy i błędy, a także zapewniały sposoby ich rozwiązywania i rozwiązania, najważniejszą rzeczą w diagnozowaniu błędu jest zrozumienie, co to znaczy (pod względem tego, co powoduje).

Jak więc to określić? Poniższe punkty poprowadzą cię, jak ustalić, co dokładnie powoduje problem:

  1. Pierwszym i najważniejszym krokiem jest spojrzenie na dzienniki MySQL, które są przechowywane w katalogu /var/log/mysql/. Możesz użyć narzędzi linii poleceń, takich jak ogon do odczytu przez pliki dziennika.
  2. Jeśli usługa MySQL nie uruchomi się, sprawdź swój status za pomocą SystemCtl lub użyj JournetCtl (z -xe flaga) polecenie pod systemem w celu zbadania problemu.
  3. Możesz także zbadać plik dziennika systemu, taki jak /var/log/wiadomości lub podobne z powodów twojego problemu.
  4. Spróbuj użyć narzędzi takich jak Mytop, spojrzenia, top, PS lub HTOP, aby sprawdzić, który program przyjmuje cały proces.
  5. Zakładając, że problem to jakiś niekonkurencyjny proces, zawsze możesz go zabić (za pomocą narzędzia Pkill lub Kill), aby MySQL działał normalnie.
  6. Zakładając, że Mysqld Serwer powoduje problemy, możesz uruchomić polecenie: mysqladmin -u root ping Lub lista procesów root MySqladmin -u Aby uzyskać od tego jakąkolwiek odpowiedź.
  7. Jeśli problem dotyczy programu klienta podczas próby połączenia się z serwerem MySQL, sprawdź, dlaczego nie działa dobrze, spróbuj uzyskać z niego jakiekolwiek dane wyjściowe w celu rozwiązywania problemów.

Możesz także przeczytać te następujące artykuły związane z MySQL:

  1. Naucz się MySQL / Mariadb dla początkujących - część 1
  2. Jak monitorować bazy danych MySQL/MariaDB za pomocą NetData w Centos 7
  3. Jak przenieść wszystkie bazy danych mysql ze starego do nowego serwera
  4. Mytop - przydatne narzędzie do monitorowania wydajności MySQL/MariaDB w Linux
  5. 12 Mysql/Mariadb Security Najlepsze praktyki dla Linux

Aby uzyskać więcej informacji, zapoznaj się z instrukcją referencyjną MySQL dotyczącą problemów i typowych błędów, kompleksowo wymienia typowe problemy i komunikaty o błędach, które możesz napotkać podczas korzystania z MySQL, w tym tych, które omówiliśmy powyżej i więcej.