2012-10-23 8 views
5

Kiedy próbuję połączyć się z lokalną bazą danych mysql przy użyciu zdalnego adresu IP, otrzymuję odmowę dostępu. Kiedy próbuję połączyć się z tą samą bazą danych z zewnętrznego komputera, działa ona bez żadnych problemów. Kiedy łączę się z lokalną bazą danych za pomocą localhost, działa również doskonale. Na przykład, jeśli serwer bazy danych ma ip 1.2.3.4 następnie uzyskać następujące wyniki:mysql: połączenie odrzucone podczas próby połączenia z localhost za pomocą zdalnego adresu IP

# From the db server 
mysql -u username -h localhost -p #works perfectly 
mysql -u username -h 127.0.0.1 -p #works perfectly 
mysql -u username -h 1.2.3.4 -p #Access denied 

# From any other machine 
mysql -u username -h 1.2.3.4 -p #works perfectly 

Co mogę zrobić, aby umożliwić dostęp lokalny do mojej bazy danych za pomocą swojego pilota adres IP? System operacyjny serwera bazy danych to Fedora 15, a wersja MySQL to 5.5.23.

+0

Czy używasz zapory? Jakie są ustawienia zapory? –

+1

"Odmowa połączenia" podpowiedzi w ustawieniach sieci. Jeśli mysql odmawia dostępu, mówi tak: "ERROR 1130 (HY000): host '1.2.3.4' nie może połączyć się z tym serwerem MySQL" –

+0

@Justin ᚅᚔᚈᚄᚒᚔ - Używam ip-tables, ale nic więcej. @Olaf - Przepraszam, popełniłem błąd: dostałem komunikat "ERROR 1045 (28000): Odmowa dostępu", a połączenie nie zostało odrzucone. – Tiddo

Odpowiedz

1

Znalazłem rozwiązanie mojego problemu samodzielnie, ale nadal nie bardzo rozumiem, dlaczego to nie działa:

I przyznanych uprawnień danego użytkownika na hostach% i localhost:

# Before 
+-----------------+------------+ 
| Host   | User  | 
+-----------------+------------+ 
| %    | username | 
| localhost  | username | 
+-----------------+------------+ 

Przy tych ustawieniach uzyskałem wyniki, które pokazałem powyżej. Kiedy przyznałem przywileje temu użytkownikowi na hoście, nagle zadziałało.

# After 
+-----------------+------------+ 
| Host   | User  | 
+-----------------+------------+ 
| %    | username | 
| localhost  | username | 
| <myIpAddress> | username | 
+-----------------+------------+ 

Prawdopodobnie% działa w przypadku połączeń zdalnych, ale nie w przypadku połączeń lokalnych.

0

Ten szczególny problem może być spowodowany rozpoznaniem nazwy hosta.

mam rozwiązać go w moim konkretnym przypadku przez usunięcie tej zmiennej z moim my.cnf pliku konfiguracyjnym:

skip-name-rozwiązać

Każda uwaga zmienną poprzez umieszczenie funt znak # lub po prostu usuń go z pliku my.cnf, oczywiście po wykonaniu kopii zapasowej.

Powiązane problemy