2013-09-30 14 views
88

Dlaczego, dlaczego nie mogę połączyć się z MySQL?BŁĄD 1130 (HY000): Host '' nie może połączyć się z tym serwerem MySQL

mysql -u root -ptest101 -h xxx.xxx.xxx.xxx 
ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server 

W my.cnf mam poniżej

# Instead of skip-networking the default is now to listen only on 
# localhost which is more compatible and is not less secure. 
bind-address  = 0.0.0.0 

Ja również prowadził poniżej ...

'UPDATE mysql.user SET Password = PASSWORD('test101') WHERE User = 'root'; 
FLUSH PRIVILEGES; 

mogę przejść na maszynie hosta za pomocą korzeni mysql -u - ptest101 ale nie używając mysql -u root -ptest101 -h xxx.xxx.xxx.xxx

Wow ... dlaczego tak się dzieje? Ja n ubuntj 12,04

mysql> SELECT host FROM mysql.user WHERE User = 'root'; 
+---------------------------------------------+ 
| host          | 
+---------------------------------------------+ 
| %           | 
| 127.0.0.1         | 
| ::1           | | 
| localhost         | 
+---------------------------------------------+ 
5 rows in set (0.00 sec) 
+0

Pamiętaj, że konta mysql to nie tylko nazwa użytkownika. są to pary 'user @ host', gdzie każda z tych par może być symbolem wieloznacznym. Być może korzystasz z prawidłowej nazwy użytkownika, ale czy przyznałeś również odpowiednie uprawnienia hosta? –

Odpowiedz

193

swoje konto root, a stwierdzenie to odnosi się do dowolnego konta, mogły zostać dodane tylko z dostępem localhost (co jest zalecane).

Można to sprawdzić z:

SELECT host FROM mysql.user WHERE User = 'root'; 

Jeśli widzisz tylko wyniki z localhost i 127.0.0.1, nie można połączyć z zewnętrznego źródła. Jeśli widzisz inne adresy IP, ale nie ten, z którego się łączysz - to także wskazówka.

Trzeba dodać adres IP każdego systemu, który chcesz nadać prawa dostępu, a następnie przyznania przywilejów:

CREATE USER 'root'@'ip_address' IDENTIFIED BY 'some_pass'; 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'ip_address'; 

Jeśli widzisz %, również wtedy, tam w ogóle jak to jest inny problem "dowolne zdalne źródło". Jeśli jednak chcemy dowolny/wszystkie systemy łączenia poprzez root, użyj % wieloznaczny udzielenia dostępu:

CREATE USER 'root'@'%' IDENTIFIED BY 'some_pass'; 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; 

Wreszcie przeładować uprawnienia i powinieneś mieć możliwość zdalnego dostępu:

FLUSH PRIVILEGES; 
+0

Zrobiłem to, co zasugerowałem. Zobacz to powyżej. Wciąż dostaję ten sam błąd. Nie mogę się połączyć. – Tampa

+5

Ten post pracował http://bucktownbell.com/?p=653 – Tampa

+2

To wyrażenie sql "PRZYZNAJ WSZYSTKIE PRZYWILEJE NA *. * DO 'root' @ '%'" potrzebują ";" po nim ... –

-4

Przejdź do PhpMyAdmin, kliknij żądaną bazę danych, przejdź do zakładki Privilages i utwórz nowego użytkownika "remote", i przekaż mu wszystkie uprawnienia oraz w polu hosta ustaw opcję "Any host" (%).

12

następujące dwa etapy pracował perfekcyjnie dla mnie:

  1. Wykomentuj adres powiązania z pliku /etc/mysql/my.cnf:

    #bind-address = 127.0.0.1

  2. Run następującej kwerendy w phpMyAdmin:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;

+6

+ 'sudo service mysql restart' – sromku

1

mysql> UTWÓRZ UŻYTKOWNIKA nazwa "@"% "OZNACZONA PRZEZ" hasło "; Zapytanie OK, 0 zmienione wiersze (0.00 sec)

mysql> PRZYZNAJ WSZYSTKIE PRZYWILEJE NA . TO 'name' @ '%'; Zapytanie OK, 0 wierszy zmieniony (0,00 s)

mysql> PRZYCHODY PŁUSZCZAJĄCE; Query OK, 0 rows affected (0.00 sec)

mysql>

  1. Sprawdź, czy masz swoje nazwisko i% prawo odwrotnie
  2. Sprawia pewno dodałem port 3306 na każdym firewall może być uruchomiony (chociaż to daje inny komunikat o błędzie)

nadzieję, że to pomoże komuś ...

-8

istnieje prosty sposób, aby naprawić ten błąd

prostu zastąpić pliki w folderze: C:\xampp\mysql\data\mysql

z plikami na: C:\xampp\mysql\backup\mysql

7
$mysql -u root --host=127.0.0.1 -p 

mysql>use mysql 

mysql>GRANT ALL ON *.* to [email protected]'%' IDENTIFIED BY '[email protected]'; 

mysql>FLUSH PRIVILEGES; 

mysql> SELECT host FROM mysql.user WHERE User = 'root'; 
-1

dla tych, którzy są w stanie uzyskać dostęp do cpanel, istnieje prostszy sposób poruszania się po nim.

  1. dziennik w cpanel => "Remote MySQL" w ramach sekcji bazy danych:

  2. Dodaj IPS/hosta, który łączysz się z

  3. zrobić !!!

Powiązane problemy