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.
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".
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
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
- otwórz plik pod ' etc / mysql / my.cnf "
-
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)
-
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
-
Sudo service mysqld restart
- 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'
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
Wybierz dowolny Host dla żądanej nazwy użytkownika
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
-
Utwórz użytkownika
CREATE USER 'user'@'%' IDENTIFIED BY 'password';
-
Grant permissions
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;
-
Przywileje spłukiwania
FLUSH PRIVILEGES;
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.
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!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.
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
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:
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)
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.)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;
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.
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!
Myślę, że jest podobna opcja na innych panelach C. np. plesk itp..
Mam nadzieję, że tobie też to pomogło.
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.
Szczęśliwego kodowania!!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.
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".
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*
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.
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!
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 ;
- idź do swojego
DirectAdmin
. - idź do swojego
MySQL Management
. - Wybierz swój
database
. - w zakładce
Accesse Host
znajduje się pole. Należy wypełnić to pole przezxxx.xx.xxx.xx
. - 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!
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 .
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.
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)
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.
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
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