Nieznajomy11 | 2020-04-01 15:03:04 UTC | #1
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).
Musimy połączyć się z SSH naszego serwera, możemy użyć do tego programu PuTTY lub jego następcy Bitvise.
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
]
nano /etc/mysql/my.cnf
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
Czasami widzimy tylko:
bind-address = 127.0.0.1
wtedy wystarczy po prostu zmienić adres.
CTRL + X
, a następnie Enter
.service mysql restart
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 .
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION
Gdzie:
USERNAME
to login nowego użytkownikaPASSWORD
to hasło nowego użytkownika1.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
FLUSH PRIVILEGES
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 | 2017-04-28 18:40:29 UTC | #2
Dzięki z chęcią to wykorzystam
Timo | 2017-04-28 18:55:25 UTC | #3
Estetyczne, ładnie wygląda i czytelne. Dałem serduszko :D
Nieznajomy11 | 2017-04-28 19:55:07 UTC | #4
@Aylin proszę o tryb wiki, chciałbym dodać jeszcze inny przykład edycji my.cnf :>
Aylin | 2017-04-28 19:56:35 UTC | #5
Powinno już działać :slight_smile:
ReaVeN | 2017-05-15 14:49:57 UTC | #6
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 | 2017-05-15 13:27:22 UTC | #7
Podstawowa kwestia: Czy w bazie danych masz odblokowanie łączenie się z innych adresów niż localhost ?
Nieznajomy11 | 2017-05-15 13:39:17 UTC | #8
Indeks jest po to, żeby go przeglądać i czytać :stuckouttongue:
https://forum.lvlup.pro/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://forum.lvlup.pro/t/host-1-2-3-4-is-not-allowed-to-connect-to-this-mysql-server-jak-naprawic/2627
ReaVeN | 2017-05-15 13:44:11 UTC | #9
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 | 2017-05-15 14:51:19 UTC | #10
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ą :)