Enable Remote Access (Grant) Home / Tutorials / Mysql / Enable Remote Access (Grant) Jeśli spróbujesz połączyć się z serwerem mysql ze zdalnego komputera i napotkasz błąd jak poniżej, ten artykuł jest dla Ciebie.
BŁĄD 1130 (HY000): Host „1.2.3.4” nie może połączyć się z tym serwerem MySQL
Zmień konfigurację mysql
Zacznij od edycji pliku konfiguracyjnego mysql
vim /etc/mysql/my.cnf
Skomentuj następujące wiersze.
#bind-address = 127.0.0.1
#skip-networking
Jeśli nie znajdziesz linii pomijania sieci, dodaj ją i skomentuj.
Uruchom ponownie serwer mysql.
~ /etc/init.d/mysql restart
Zmień uprawnienie GRANT
Możesz być zaskoczony, gdy nawet po powyższej zmianie nie otrzymujesz dostępu zdalnego lub dostępu, ale nie możesz uzyskać dostępu do wszystkich baz danych.
Domyślnie używana nazwa użytkownika i hasło mysql ma dostęp do lokalnego serwera mysql. Więc musisz zaktualizować uprawnienia.
Uruchom polecenie jak poniżej, aby uzyskać dostęp ze wszystkich komputerów. (Zamień USERNAME
i za PASSWORD
pomocą poświadczeń.)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Uruchom polecenie jak poniżej, aby uzyskać dostęp z określonego adresu IP. (Zamień USERNAME
i za PASSWORD
pomocą poświadczeń.)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Możesz zastąpić 1.2.3.4 swoim adresem IP. Możesz uruchomić powyższą komendę wiele razy, aby UZYSKAĆ dostęp z wielu adresów IP.
Możesz także określić oddzielny USERNAME
i PASSWORD
zdalny dostęp.
Możesz sprawdzić końcowy wynik:
SELECT * from information_schema.user_privileges where grantee like "'USERNAME'%";
Wreszcie może być konieczne uruchomienie:
mysql> FLUSH PRIVILEGES;
Testuj połączenie
Z terminala / wiersza poleceń:
mysql -h HOST -u USERNAME -pPASSWORD
Jeśli otrzymasz powłokę mysql, nie zapomnij uruchomić baz danych show; aby sprawdzić, czy masz odpowiednie uprawnienia ze zdalnych komputerów.
Porada dodatkowa: Odwołaj dostęp
Jeśli przypadkowo przyznasz dostęp użytkownikowi, lepiej skorzystaj z opcji odwołania.
Poniższe unieważnią wszystkie opcje dla USERNAME ze wszystkich komputerów:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%';
Following will revoke all options for USERNAME from particular IP:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4';
Its better to check information_schema.user_privileges table after running REVOKE command.
Jeśli widzisz uprawnienie USAGE po uruchomieniu polecenia REVOKE, jest w porządku. Jest tak dobry, jak żaden przywilej. Nie jestem pewien, czy można go odwołać.