Host 'xxx. XXX. xxx. xxx' nie może łączyć się z tym serwerem MySQL

To powinno być bardzo proste, ale ja nie mogę sprawić, by zadziałało na moje życie.
Próbuję połączyć się zdalnie z moim serwerem MySQL.

  • łączenie jako:
    mysql -u root -h localhost -p  
  • działa dobrze, ale próbuje:
    mysql -u root -h 'any ip address here' -p
  • nie powiodło się z błędem:
    ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server

W tabeli mysql.user znajduje się dokładnie taki sam wpis dla użytkownika "root" z hostem "localhost", jak inny z hostem"%".

I' m at my wit ' end and have no idea jak postępować. Wszelkie pomysły są mile widziane.

Author: juanmirocks, 2009-10-13

26 answers

Prawdopodobnie zabezpieczenie. Możesz spróbować dodać nowe konto administratora:

mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
    ->     WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    ->     WITH GRANT OPTION;

Chociaż, jak zauważyli Pascal i inni, nie jest to świetny pomysł, aby użytkownik z tego rodzaju dostępem był otwarty na dowolny adres IP. Jeśli potrzebujesz użytkownika administracyjnego, użyj root i pozostaw go na localhost. W przypadku każdej innej akcji określ dokładnie potrzebne uprawnienia i ogranicz dostępność użytkownika, jak sugeruje Pascal poniżej.

Edit:

Z MySQL FAQ:

Jeśli nie możesz zrozumieć, dlaczego dostajesz Odmowa dostępu, usunięcie z Użytkownika tabela wszystkich wpisów, które mają hosta wartości zawierające symbole wieloznaczne (wpisy które zawierają znaki ' % 'lub'_'). A bardzo częstym błędem jest wstawienie nowego wpis z Host= ' % ' i User= 'some_user', myśląc, że to pozwala określić localhost do podłącz z tej samej maszyny. Na powodem, dla którego to nie działa, jest to, że domyślne uprawnienia obejmują wpis z Host= 'localhost' i User=". Ponieważ ten wpis ma hosta wartość "localhost", która jest bardziej specyficzny niż"%", jest stosowany w preferowanie nowego wpisu, gdy łączenie z localhost! The correct procedura polega na wstawieniu drugiego wpisu with Host= 'localhost' and User= 'some_user', lub aby usunąć wpis z Host= 'localhost' i User=". Po usunięciu wpisu, pamiętaj o nadaniu uprawnień do koloru Oświadczenie o ponownym załadowaniu tabel dotacji. Patrz również punkt 5.4.4, " dostęp Sterowanie, Etap 1: Połączenie Weryfikacja".

 893
Author: Yannick Motton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-13 13:25:34

Należy utworzyć new MySQL User i przypisać uprawnienia jak poniżej w {[2] } poprzez phpMyAdmin lub wiersz polecenia:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

Po wykonaniu wszystkich czterech zapytań, powinien połączyć się z username / password

 298
Author: Aditya P Bhatt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-10 18:26:46

Mój komunikat o błędzie był podobny i powiedział " Host XXX nie może łączyć się z tym serwerem MySQL ", mimo że używałem roota. Oto jak upewnić się, że root ma prawidłowe uprawnienia.

Moja konfiguracja :

  • Ubuntu 14.04 LTS
  • MySQL v5.5.37

Rozwiązanie

  1. otwórz plik pod ' etc / mysql / my.cnf "
  2. Sprawdź dla:

    • port (domyślnie jest to ' port = 3306')
    • bind-address (domyślnie jest to 'bind-address = 127.0.0.1'; jeśli chcesz otworzyć dla wszystkich, po prostu skomentuj tę linię. Na mój przykład powiem, że rzeczywisty serwer jest na 10.1.1.7)
  3. Teraz uzyskaj dostęp do bazy danych MySQL na Twoim rzeczywistym serwerze (powiedzmy, że Twój zdalny adres to 123.123.123.123 na porcie 3306 jako użytkownik 'root' i chcę zmienić uprawnienia do bazy 'dataentry'. Pamiętaj, aby zmienić adres IP, Port i nazwę bazy danych na swój ustawienia)

    mysql -u root -p
    Enter password: <enter password>
    mysql>GRANT ALL ON *.* to root@'123.123.123.123' IDENTIFIED BY 'put-your-password';
    mysql>FLUSH PRIVILEGES;
    mysql>exit
    
  4. Sudo service mysqld restart

  5. powinieneś być teraz w stanie zdalnie połączyć się z bazą danych. Na przykład, używam MySQL Workbench i wstawiam 'Hostname:10.1.1.7', 'Port:3306', 'Username:root'
 125
Author: Will,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-27 13:15:21

Musisz przyznać dostęp do użytkownika z dowolnej nazwy hosta.

Tak można dodać nowe uprawnienia z phpmyadmin

Goto Privileges > Add a new User

Tutaj wpisz opis obrazka

Wybierz dowolny Host dla żądanej nazwy użytkownika

Tutaj wpisz opis obrazka

 77
Author: HimalayanCoder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-21 11:42:26

Wystarczy wykonać następujące kroki:

1a) Połącz się z mysql (przez localhost)

mysql -uroot -p
Jeśli serwer mysql jest uruchomiony w Kubernetes (K8s) i jest dostępny przez NodePort
kubectl exec -it [pod-name] -- /bin/bash
mysql -uroot -p
  1. Utwórz użytkownika

    CREATE USER 'user'@'%' IDENTIFIED BY 'password';

  2. Grant permissions

    GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;

  3. Przywileje spłukiwania

    FLUSH PRIVILEGES;

 74
Author: minhas23,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-09 08:13:46

Wiadomość {[0] } jest odpowiedzią serwera MySQL na klienta MySQL. Zauważ, jak zwraca adres IP, a nie nazwę hosta.

Jeśli próbujesz połączyć się z mysql -h<hostname> -u<somebody> -p i zwraca ten komunikat z adresem IP, wtedy serwer MySQL nie jest w stanie wykonać odwrotnego wyszukiwania na kliencie. Jest to krytyczne, ponieważ w ten sposób mapuje klienta MySQL do grantów.

Upewnij się, że możesz zrobić nslookup <mysqlclient> z serwera MySQL. Jeśli to nie zadziała, to nie ma wpisu w serwer DNS. Alternatywnie, możesz umieścić wpis w pliku HOSTS serwera MySQL (<ipaddress> <fullyqualifiedhostname> <hostname>

Wpis w pliku hosta mojego serwera pozwalający na odwrotne wyszukiwanie klienta MySQL rozwiązał ten problem.

 28
Author: Dennis McLaughlin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-13 13:42:30

Prosty sposób:

Grant All Privileges ON *.* to 'USER_NAME'@'%' Identified By 'YOUR_PASSWORD'; 

Then

FLUSH PRIVILEGES;
Zrobione!
 25
Author: devugur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-24 08:05:40

Jeśli zmienisz tabele dotacji ręcznie (za pomocą INSERT, UPDATE, itp.), należy wykonać FLUSH PRIVILEGES Instrukcja nakazująca serwerowi ponowne załadowanie tabel dotacji.

PS: nie polecam zezwalać żadnemuhostowi na łączenie się dla dowolnego użytkownika (szczególnie nie dla root). Jeśli używasz mysql dla aplikacji klient/serwer, preferuj adres podsieci. Jeśli używasz mysql z serwerem WWW lub serwerem aplikacji, użyj określonych adresów IP.

 16
Author: Pascal Thivent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-13 13:05:30

To działa dla każdego przyszłego zdalnego połączenia mysql !

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Przejdź do linii zaczynającej się od dyrektywy bind-address. Powinno to wyglądać tak:

    bind-address            = 0.0.0.0

Zaloguj się do mysql jako root terminal

    mysql -u root -p
    -- root password

    CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

    GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

    CREATE USER 'username'@'%' IDENTIFIED BY 'password';

    GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

    FLUSH PRIVILEGES;

    EXIT;

Na koniec przyznaj tej maszynie wyłączne uprawnienia do zdalnego łączenia się z bazą danych za pomocą następującego polecenia.

    sudo ufw allow from remote_IP_address to any port 3306
 7
Author: soufiane ELAMMARI,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-03 13:14:40

Wystarczy użyć interfejsu dostarczonego przez narzędzie GUI MySql (SQLyog):

Kliknij na Menedżerze użytkowników: Tutaj wpisz opis obrazka

Teraz, jeśli chcesz przyznać dostęp do dowolnego innego zdalnego komputera, upewnij się, że, podobnie jak na poniższym obrazku, wartość pola Host wynosi % (czyli symbol wieloznaczny)

Tutaj wpisz opis obrazka

 4
Author: BabaNew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-27 13:09:15

Większość odpowiedzi pokazuje tworzenie użytkowników z dwoma wartościami hosta: jedną dla localhost i jedną dla %.

Pamiętaj, że z wyjątkiem wbudowanego użytkownika localhost, takiego jak root, nie musisz tego robić. Jeśli po prostu chcesz stworzyć nowego użytkownika, który będzie mógł zalogować się z dowolnego miejsca, możesz użyć

CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
GRANT <whatever privileges are appropriate> ON <relevant tables> TO myuser;
I będzie dobrze działać. (Jak wspomnieli inni, przyznanie uprawnień administracyjnych użytkownikowi z dowolnej domeny jest okropnym pomysłem.)
 4
Author: Erica Kane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-12 21:49:00

Prostym sposobem jest zalogowanie się do phpmyadmin za pomocą konta root, tam jest baza danych mysql i wybierz tabelę użytkownika, tam Edytuj konto root i w polu host dodaj % wild card . a następnie poprzez SSH flush privileges

 FLUSH PRIVILEGES;
 3
Author: user889030,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-21 10:52:44

Jeśli jest to najnowsza instalacja mysql, to przed zmianą czegokolwiek innego spróbuj po prostu wykonać to polecenie, a następnie spróbuj ponownie:

flush privileges;

To samo rozwiązuje problem dla mnie na Ubuntu 16.04, mysql 5.7.20. YMMV.

 2
Author: Alex R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-22 05:54:36

Po prostu znajdź lepszy sposób, aby to zrobić z Panelu sterowania hostingu (używam DirectAdmin tutaj)

Wystarczy przejść do serwera docelowego DB w Panelu sterowania, w moim przypadku: MySQL management - > wybierz swój DB - > znajdziesz: "access Hosts", po prostu dodaj swój zdalny host tutaj i działa teraz! Tutaj wpisz opis obrazka

Myślę, że jest podobna opcja na innych panelach C. np. plesk itp..

Mam nadzieję, że tobie też to pomogło.

 2
Author: Eran Levi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-19 06:35:41

Cóż, nic z powyższej odpowiedzi nie zadziałało na mnie. Po wielu badaniach znalazłem rozwiązanie. Chociaż mogę się spóźnić, to może pomóc innym w przyszłości.

Zaloguj się do serwera SQL z Terminala

 mysql -u root -p
 -- root password
GRANT ALL ON *.* to root@'XX.XXX.XXX.XX' IDENTIFIED BY 'password';

Powinno to rozwiązać problem z uprawnieniami.

Przed rozwiązaniem błędu

Po rozwiązaniu problemu

Szczęśliwego kodowania!!
 2
Author: Pratap Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-21 18:29:47

Cóż to, co możesz zrobić, to po prostu otworzyć mysql.plik cfg i musisz zmienić Bind-address NA this

Bind-address = 127.0.0.1

A następnie uruchom ponownie mysql i będziesz mógł połączyć ten serwer z tym.

Look this you can have idea form that.

To jest prawdziwe sol

 1
Author: Kishan Bheemajiyani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-04 07:38:01

Jeśli przypadkiem działasz w systemie Windows; prostym rozwiązaniem jest uruchomienie Kreatora konfiguracji instancji serwera MySQL. Znajduje się w grupie MYSQL w menu start. Na drugim od ostatniego ekranu kliknij pole z napisem "Zezwól na dostęp roota ze zdalnych maszyn".

 1
Author: Jan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-22 14:18:20

Jeśli masz WAMP Server + Windows 10 i używasz go do rozwoju, kliknij prawym przyciskiem myszy na ikonę Wamp => Wamp Settings => Check Allow Virtual Hosts other than 127* Tutaj wpisz opis obrazka

 1
Author: Adrian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-08 09:59:17

Miałem również do czynienia z tym samym problemem, to rozwiązane w 2 min dla mnie po prostu biała lista ip przez cpanel

Załóżmy, że próbujesz połączyć bazę danych serwera B z serwera A. Przejdź do Server B Cpanel- > Remote MySQL - > wprowadź adres IP serwera i to wszystko.

 1
Author: user3437729,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-08 03:55:38

Ta odpowiedź może komuś pomóc...

Wszystkie te odpowiedzi nie pomogły, wtedy zdałem sobie sprawę, że zapomniałem sprawdzić jedną ważną rzecz.. Port :)

Mam mysql uruchomiony w kontenerze dokera działającym na innym porcie. Wskazywałem na moją maszynę hosta na porcie 3306, na której działa serwer mysql. Mój kontener wyświetla serwer na porcie 33060. Przez cały ten czas patrzyłem na zły serwer! doh!

 0
Author: Srini,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-16 22:21:47

To działa dla DirectAdmin ;

  1. idź do swojego DirectAdmin.
  2. idź do swojego MySQL Management.
  3. Wybierz swój database.
  4. w zakładce Accesse Host znajduje się pole. Należy wypełnić to pole przez xxx.xx.xxx.xx.
  5. Kliknij na Add Host.

Skończone. Teraz możesz uzyskać dostęp do tego DB przez swój your_database_username & your_database_password.
Takie Proste!

 0
Author: اسماعیل زارع,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-10 07:37:03
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Ten błąd, ponieważ nie ma hasła do roota, a to może wystąpić u ciebie, gdy próbujesz połączyć się z zewnątrz .

 0
Author: Abd Abughazaleh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-20 21:20:35

Roztwór CPANEL

Przejdź do Cpanel, poszukaj zdalnego MySQL. Dodaj IP w polu wejściowym:

Host (%wildcard jest dozwolony)

Komentarz, aby pamiętać, co to jest IP. To było to dla mnie.

 0
Author: user2060451,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-23 18:33:55

Jeśli próbujesz wykonać zapytanie mysql z definiowaniem connectionstring, otrzymasz ten błąd.

Prawdopodobnie zapomniałeś zdefiniować łańcuch połączeń przed wykonaniem. sprawdziłeś to? (sorry for bad english)

 -1
Author: Ali CAKIL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-31 07:17:38

Problem: root@localhost nie może połączyć się ze świeżą instalacją serwera mysql-community NA openSUSE 42.2-1.150.x86_64 Mysql odmawia połączeń-kropka.

Rozwiązanie:

$ ls -l /var/lib/mysql/mysql/user.*
-rw-rw---- 1 mysql mysql     0 Apr 29 19:44 /var/lib/mysql/mysql/user.MYD
-rw-rw---- 1 mysql mysql  1024 Apr 29 19:44 /var/lib/mysql/mysql/user.MYI
-rw-rw---- 1 mysql mysql 10684 Apr 29 19:44 /var/lib/mysql/mysql/user.frm

Użytkownik pliku.MYD mA 0 rozmiar (naprawdę ?!). Skopiowałem wszystkie 3 pliki z innego działającego systemu.

$ /usr/sbin/rcmysql stop
$ cd /var/lib/mysql/mysql/
$ scp root@othersytem:/var/lib/mysql/mysql/user.* ./
$ /usr/sbin/rcmysql start
$ cd -
$ mysql -u root -p

Udało mi się zalogować. Potem była tylko kwestia ponownego zastosowania wszystkich przywilejów schematów. Ponadto, jeśli wyłączyłeś IPv6, włącz go ponownie tymczasowo, aby root@::1 konto może również praca.

 -1
Author: Alex D,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-30 03:43:14

Wszystkie odpowiedzi tutaj nie działa w moim przypadku, więc gość To może pomóc innym użytkownikom w przyszłości. Może to być również problem w naszym kodzie, nie tylko w samym MySQL.

Jeśli używasz VB.NET

Zamiast tego kodu:

 Dim server As String = My.Settings.DB_Server
 Dim username As String = My.Settings.DB_Username
 Dim password As String = My.Settings.DB_Password
 Dim database As String = My.Settings.DB_Database

 MysqlConn.ConnectionString = "server=" & server & ";" _
 & "user id=" & username & ";" _
 & "password=" & password & ";" _
 & "database=" & database

 MysqlConn = New MySqlConnection()

Musisz przenieść MysqlConn = New MySqlConnection() na pierwszą linię. Więc byłoby tak

 MysqlConn = New MySqlConnection()

 Dim server As String = My.Settings.DB_Server
 Dim username As String = My.Settings.DB_Username
 Dim password As String = My.Settings.DB_Password
 Dim database As String = My.Settings.DB_Database

 MysqlConn.ConnectionString = "server=" & server & ";" _
 & "user id=" & username & ";" _
 & "password=" & password & ";" _
 & "database=" & database
 -3
Author: Cary Bondoc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-03 08:52:54