Serwer MySQL niedostępny z komputera zdalnego


14

Zainstalowałem serwer MySQL na moim lokalnym serwerze Ubuntu (11.10). Nie mogę połączyć się z serwerem ze zdalnego komputera.

Kiedy próbowałem: - nmap localhost , pokazuje następujące

USŁUGA PAŃSTWA PORTU
22 / tcp open ssh
80 / tcp otwórz http
139 / tcp otwórz netbios-ssn
445 / tcp otwórz Microsoft-DS
631 / tcp otwórz ipp
3306 / tcp open mysql

Oznacza to 3306, że port MySQL jest otwarty, prawda? Ale kiedy próbowałem nmap 192.168.0.50, czyli adres IP serwera, otrzymuję następujące informacje:

USŁUGA PAŃSTWA PORTU
22 / tcp open ssh
80 / tcp otwórz http
139 / tcp otwórz netbios-ssn
445 / tcp otwórz Microsoft-DS

Czy to oznacza, że ​​port nie jest otwarty podczas uzyskiwania dostępu za pomocą IP? Jeśli tak, jak mogę otworzyć port?

Próbowałem następujący kod, ale wygląda na to, że nie działał.

sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

Co tu jest nie tak?

Odpowiedzi:


22

Twoja usługa MySQL musi obsługiwać tylko host lokalny (wiązanie interfejsu). Jest to ustawienie domyślne ze względów bezpieczeństwa. Jeśli naprawdę potrzebujesz dostępu do niego bezpośrednio z innych hostów, istnieje fajny sposób na włączenie zdalnego dostępu do MySQL na Ubuntu, który możesz śledzić:

  1. jako root, otwórz swój /etc/mysql/my.cnflub /etc/mysql/mysql.conf.d/mysqld.cnf w swoim ulubionym edytorze, ponieważ w różnych systemach okazuje się, że jest inny.
  2. poszukaj [mysqld]sekcji, a tam bind-addresssłowa kluczowego. Zazwyczaj jest to ustawione na 127.0.0.1- zmień tak, aby pasowało do twojego „normalnego” adresu IP
  3. zapisz plik i załaduj ponownie usługę (np. używając service mysql restart)

Pamiętaj, że musisz umożliwić zdalnym użytkownikom dostęp do ich baz danych ze zdalnego, poprzez ustawienie odpowiednich GRANTÓW - np

GRANT ALL ON mydb.* TO remoteuser@'%' IDENTIFIED BY 'SomePASSWORD';

Uwaga @'%', co oznacza „z dowolnego hosta”.


Cieszę się, że czytam - i nie ma za co!
Izzy

link jest zepsuty :(
dino

2
@dino Już nie. Naprawiłem to, a także załączyłem fragment, więc jeśli znów umrze, wymagane kroki są nadal dostępne. Moje złe, że nie robiłem tego od samego początku - ale jak widać na podstawie znacznika czasu, była to jedna z moich wczesnych odpowiedzi. Wszyscy się uczymy :)
Izzy

2
Pole adresu powiązania było poniżej /etc/mysql/mysql.conf.d/mysqld.cnfmojego systemu.
Eric G

@EricG Dzięki za wskaźnik. Moja odpowiedź brzmiała 5 lat temu, więc konfiguracje nieco się zmieniły (i prawdopodobnie stały się bardziej modułowe).
Izzy
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.