Host ‘1.2.3.4’ is not allowed to connect to this MySQL server - Jak naprawić?

Poradniki
vps, mysql
Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Jeśli próbujesz połączyć się z bazą MySQL z serwera zdalnego, ale pojawia się błąd jak poniżej, lub połączenie w ogóle nie działa ten artykuł jest dla ciebie.

(w tym przypadku serwer jest już zbindowany na zewnętrzne IP, ale nie ma właściwego użytkownika)

ERROR 1130 (HY000): Host ‘1.2.3.4’ is not allowed to connect to this MySQL server

lub (w przypadku tego błędu, serwer może też po prostu nie działać)

Error 2003 Can't connect to MySql server on '1.2.3.4' (10038).


0. Otwórz terminal VPS

Musimy połączyć się z SSH naszego serwera, możemy użyć do tego programu PuTTY lub jego następcy Bitvise.


1. Zmień konfiguracje MySQL

Kiedy już otworzyliśmy konsolę możemy zacząć działać. Najpierw zedytujemy plik my.cnf odpowiadający za główna konfiguracje bazy danych. Możemy do tego użyć edytora nano, jest on jednym z najłatwiejszych w obsłudze i w zupełności wystarczy do tego zadania. Dla bezpieczeństwa, jakby coś poszło nie tak najpierw robimy kopię pliku (komenda: cp /etc/mysql/my.cnf /etc/mysql/my.cnf.bak).

[Hint: akceptowalne lokalizacje my.cnf: mysqld --help -v | grep my.cnf]

Wpisujemy:

nano /etc/mysql/my.cnf

Odnajdujemy takie dwie linijki, zmieniamy adres 127.0.0.1 na 0.0.0.0 i usuwamy znaki komentarza (#):

#bind-address           = 127.0.0.1
#skip-networking

Wynik to:

bind-address           =  0.0.0.0
skip-networking
Notka:

Czasami widzimy tylko:

bind-address           = 127.0.0.1

wtedy wystarczy po prostu zmienić adres.

Zapisujemy zmiany w pliku klikając kombinacje klawiszy CTRL + X, a następnie Enter.

Restartujemy MySQL:

service mysql restart

2.1. Dodawanie użytkownika ze zdalnym dostępem

Aby móc łączyć się z naszą bazą zdalnie musimy stworzyć nowego użytkownika i nadać mu odpowiednie uprawnienia. Możemy użyć do tego panelu phpmyadmin. Przechodzimy w nim do sekcji 56x22.

Wpisujemy:

  • Jeśli chcemy zezwolić na połączenia z każdego IP:
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION
  • Jeśli chcemy zezwolić na połączenia z jednego IP:
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION

Gdzie:

  • USERNAME to login nowego użytkownika
  • PASSWORD to hasło nowego użytkownika
  • 1.2.3.4 to adres IP z którego będzie można się łączyć

Możemy też wybrać konkretną bazę do której ma mieć dostęp użytkownik zamieniając:

ALL PRIVILEGES ON *.*

na

ALL PRIVILEGES ON BAZA.*

lub bazę i konkretną tabele:

ALL PRIVILEGES ON BAZA.TABELA

Na końcu wpisujemy jeszcze:

FLUSH PRIVILEGES

2.2. Odbieranie dostępu

W przypadku gdy będziesz chciał usunąć użytkownika wystarczy wpisać:

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%'

lub gdy ustaliliśmy konkretne IP:

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4';

Zródlo: stackoverflow

Arimer
Arimer

Dzięki z chęcią to wykorzystam

Timo
Timo Moderator forum.lvlup.pro

Estetyczne, ładnie wygląda i czytelne. Dałem serduszko :D

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

@Aylin proszę o tryb wiki, chciałbym dodać jeszcze inny przykład edycji my.cnf :>

Aylin
Aylin ex-admin forum.lvlup.pro

Powinno już działać :slight_smile:

ReaVeN
ReaVeN

Witam posiadam serwer VPS OpenVZ z zainstalowanym Ubuntu 14.04. Na vps mam zainstalowany pakiet MySQL-Server oraz PHPMyAdmin, problem w tym ze przy probie połączenia się z Mysql przez navicata otrzymuje błąd Error 2003 Can't connect to MySql server on '91.121.55.48' (10038).

Timo
Timo Moderator forum.lvlup.pro

Podstawowa kwestia: Czy w bazie danych masz odblokowanie łączenie się z innych adresów niż localhost ?

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Indeks jest po to, żeby go przeglądać i czytać 😛 https://lvlup.rok.ovh/t/vps-zbior-poradnikow/2466

Dodałem twój rodzaj błędu, aby na przyszłość wyszukiwarka na forum łatwiej odnalazła ten poradnik (bo zakładam, że jej użyłeś, prawda? :>): https://lvlup.rok.ovh/t/host-1-2-3-4-is-not-allowed-to-connect-to-this-mysql-server-jak-naprawic/2627

435x239

ReaVeN
ReaVeN

Dzięki, widziałem ten temat lecz nie wiedziałem czy mój błąd ma coś wspólnego z tym coś tam pisze. Zaraz sprawdzę sposób tam podany i dam odpowiedz. W razie problemów pisać dalej w tym wątku czy tym co podlinkował @Nieznajomy11

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Problem podobny, więc myślę, że można pisać tutaj (przeniosłem do poradnika), powinno to pozytywnie wpłynąć jeśli chodzi o wyszukiwanie, zawsze większa szansa, że jakieś słowa których będzie szukać inny użytkownik się trafią :)