To powinno być bardzo proste, ale nie mogę zmusić go do pracy przez całe moje życie.
Próbuję tylko 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
kończy się błędem
ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server
W mysql.user
tabeli znajduje się dokładnie taki sam wpis dla użytkownika „root” z hostem „localhost”, jak inny z hostem „%”.
Jestem na granicy rozumu i nie mam pojęcia, jak postępować. Wszelkie pomysły są mile widziane.
mysql
mysql-error-1130
concept47
źródło
źródło
Odpowiedzi:
Prawdopodobnie środek bezpieczeństwa. Możesz spróbować dodać nowe konto administratora:
Chociaż, jak zauważyli Pascal i inni, nie jest dobrym pomysłem, aby użytkownik z takim dostępem miał dostęp do dowolnego adresu IP. Jeśli potrzebujesz użytkownika administracyjnego, użyj roota 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.
Edytować:
Z MySQL FAQ:
źródło
Należy utworzyć
new MySQL User
i przypisać uprawnienia jak poniżej wQuery prompt
phpMyAdmin lub wierszu polecenia:Po wykonaniu wszystkich czterech zapytań powinien się połączyć
username / password
źródło
@localhost
miałoby sens, gdyby uprawnienia były w jakiś sposób różne, ale tutaj są takie same i prawdopodobnie będzie bardziej mylące niż cokolwiek innego (np. zmiana hasła na jednym, nie zdając sobie sprawy z tego, że drugie istnieje, i że twój login może do niego trafić ).Mój komunikat o błędzie był podobny i powiedział „ Host XXX nie może połączyć się z tym serwerem MySQL ”, mimo że korzystałem z roota. Oto jak upewnić się, że root ma odpowiednie uprawnienia.
Moja konfiguracja :
Rozwiązanie
Sprawdź:
Teraz uzyskaj dostęp do bazy danych MySQL na twoim rzeczywistym serwerze (powiedz, że twój zdalny adres to 123.123.123.123 na porcie 3306 jako użytkownik „root” i chcę zmienić uprawnienia do „bazy danych”. Pamiętaj, aby zmienić adres IP, port i nazwę bazy danych do twoich ustawień)
usługa sudo mysqld restart
źródło
use dataentry
linię (ponieważ większość osób nie utworzy tej bazy danych).mysql
usługi na końcuFLUSH PRIVILEGES
powinien pozwolić ci nie wymagać ponownego uruchamiania.Musisz przyznać dostęp użytkownikowi z dowolnej nazwy hosta.
W ten sposób dodajesz nowe uprawnienia od phpmyadmin
Idź do uprawnień> Dodaj nowego użytkownika
Wybierz Dowolny host dla żądanej nazwy użytkownika
źródło
Po prostu wykonaj następujące czynności:
1a) Połącz się z mysql (przez localhost)
1b) Jeśli serwer myslq działa w Kubernetes (K8s) i jest dostępny za pośrednictwem NodePort
2) Utwórz użytkownika
3) Udziel uprawnień
4) Przywileje koloru
źródło
Wiadomość
*Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server
jest odpowiedzią z serwera MySQL na klienta MySQL. Zauważ, że zwraca adres IP, a nie nazwę hosta.Jeśli próbujesz się połączyć,
mysql -h<hostname> -u<somebody> -p
a ten zwraca ten adres z adresem IP, serwer MySQL nie może wykonać wyszukiwania wstecznego na kliencie. Jest to krytyczne, ponieważ w ten sposób mapuje klienta MySQL na granty.Upewnij się, że możesz zrobić
nslookup <mysqlclient>
z serwera MySQL. Jeśli to nie zadziała, nie ma wpisu na serwerze DNS. Alternatywnie możesz umieścić wpis w pliku HOSTS serwera MySQL (<ipaddress> <fullyqualifiedhostname> <hostname>
<- Kolejność tutaj może mieć znaczenie).Wpis w pliku hosta mojego serwera, umożliwiający wsteczne wyszukiwanie klienta MySQL, rozwiązał ten bardzo problem.
źródło
Prosta droga:
następnie
gotowy!
źródło
WHERE CustomerName LIKE 'a%'
- Znajduje wartości zaczynające się na „a”W przypadku ręcznej modyfikacji tabel grantu (za pomocą INSERT, UPDATE itp.) Należy wykonać
FLUSH PRIVILEGES
instrukcję informującą serwer o ponownym załadowaniu tabel grantu.PS: Nie polecam zezwalać żadnym hostom na łączenie się dla dowolnego użytkownika (szczególnie nie do
root
użytku). Jeśli używasz mysql do aplikacji klient / serwer, preferuj adres podsieci. Jeśli używasz mysql z serwerem WWW lub serwerem aplikacji, użyj określonych adresów IP.źródło
Wystarczy użyć interfejsu dostarczonego przez narzędzie GUI MySql (SQLyog):
Kliknij Menedżer użytkowników:
Teraz, jeśli chcesz przyznać dostęp DLA KAŻDEGO INNEGO ZDALNEGO PC, po prostu upewnij się, że, tak jak na poniższym obrazku, wartością pola Host jest% (czyli symbol wieloznaczny)
źródło
Większość odpowiedzi tutaj pokazuje tworzenie użytkowników z dwiema wartościami hosta: jedną dla
localhost
i jedną dla%
.Pamiętaj, że oprócz wbudowanego użytkownika localhost, takiego jak root, nie musisz tego robić. Jeśli chcesz po prostu utworzyć nowego użytkownika, który będzie mógł logować się z dowolnego miejsca, możesz użyć
i będzie działać dobrze. (Jak wspomnieli inni, strasznym pomysłem jest przyznanie uprawnień administracyjnych użytkownikowi z dowolnej domeny).
źródło
najprostszym sposobem jest zalogowanie się do phpmyadmin przy użyciu konta root, tam jest baza danych mysql i wybierz tabelę użytkowników, tam edytuj konto root i w polu hosta dodaj% wild card. a następnie poprzez uprawnienia ssh flush
źródło
Jeśli jest to ostatnia instalacja mysql, to zanim zmienisz cokolwiek innego, po prostu wykonaj to polecenie, a następnie spróbuj ponownie:
To samo rozwiązuje problem dla mnie w Ubuntu 16.04, mysql 5.7.20. YMMV.
źródło
Po prostu znajdź lepszy sposób na to w panelu sterowania hostingu (tutaj używam DirectAdmin)
po prostu przejdź do DB serwera docelowego w panelu sterowania, w moim przypadku: zarządzanie MySQL -> wybierz DB -> znajdziesz: „Access Hosts”, po prostu dodaj tutaj swój zdalny host i już działa!
Wydaje mi się, że istnieje podobna opcja na innych panelach C., takich jak plesk itp.
Mam nadzieję, że Ci również pomogło.
źródło
Cóż, nic z powyższej odpowiedzi nie działało dla mnie. Po wielu badaniach znalazłem rozwiązanie. Chociaż mogę się spóźnić, może to pomóc innym w przyszłości.
Zaloguj się do serwera SQL z terminala
To powinno rozwiązać problem z uprawnieniami.
Miłego kodowania !!
źródło
Cóż, co możesz zrobić, to po prostu otworzyć plik mysql.cfg i musisz zmienić adres Bind na to
adres powiązania = 127.0.0.1
a następnie zrestartuj mysql, a będziesz mógł podłączyć do tego serwer.
Spójrz, możesz mieć z tego pomysł.
to jest prawdziwe zol
źródło
Jeśli akurat działasz w systemie Windows; Prostym rozwiązaniem jest uruchomienie kreatora konfiguracji instancji serwera MySQL. Jest w twojej grupie MYSQL w menu Start. Na drugim z ostatniego ekranu kliknij pole „zezwól na dostęp roota ze zdalnych komputerów”.
źródło
Jeśli masz WAMP Server + Windows 10 i używasz go do programowania, kliknij prawym przyciskiem myszy ikonę Wamp =>
Wamp Settings
=>Check Allow Virtual Hosts other than 127*
źródło
Miałem również do czynienia z tym samym problemem. Rozwiązałem to w 2 minuty dla mnie po prostu biała lista ip przez cpanel
Załóżmy, że próbujesz połączyć bazę danych serwera B z serwerem A. Przejdź do serwera B Cpanel-> Remote MySQL-> wpisz adres IP serwera A i to wszystko.
źródło
Ta odpowiedź może pomóc komuś ...
Wszystkie te odpowiedzi nie pomogły, ale zdałem sobie sprawę, że zapomniałem sprawdzić jedną kluczową rzecz .. Port :)
Mam mysql działający w kontenerze dokującym działającym na innym porcie. Wskazałem na moją maszynę hosta na porcie 3306, na której działa serwer mysql. Mój kontener odsłania serwer na porcie 33060. Przez cały ten czas szukałem niewłaściwego serwera! doh!
źródło
ten błąd, ponieważ nie ma hasła do katalogu głównego, i może to wystąpić podczas próby połączenia z zewnątrz.
źródło
Rozwiązanie CPANEL
Idź do Cpanel, poszukaj Remote MySQL. Dodaj adres IP w polu wejściowym:
Host (dozwolony jest% symbol wieloznaczny)
Komentarz, aby pamiętać, co to jest adres IP. To było dla mnie.
źródło
Działa to dla każdego przyszłego zdalnego połączenia mysql!
Przejdź do wiersza rozpoczynającego się od dyrektywy bind-address. To powinno wyglądać tak:
Zaloguj się do mysql jako terminal root
w końcu Udziel temu komputerowi wyłącznego uprawnienia do zdalnego łączenia się z bazą danych za pomocą następującego polecenia.
źródło
Przy małej szansie, że ktoś napotyka ten problem z SQLyog, zdarzyło się to:
Połączyłem się ze zdalną bazą danych (z poziomu SQLyog) i pracowałem przez kilka godzin. Potem opuściłem system na kilka minut, a potem wróciłem, aby kontynuować pracę - BŁĄD 1130 ! Nic, co próbowałem, nie zadziałało; Ponowne uruchomienie SQLyog nie naprawiło tego. Następnie zrestartowałem system - nadal nie działał.
Próbowałem więc połączyć się z terminalem - zadziałało. Następnie spróbowałem ponownie na SQLyog ... i zadziałało. Nie potrafię tego wyjaśnić inaczej niż „przypadkowe dziwactwo komputerowe”, ale myślę, że może komuś pomóc.
źródło
jeśli próbujesz wykonać zapytanie mysql bez definiowania parametrów połączenia, pojawi się ten błąd.
Prawdopodobnie zapomniałeś zdefiniować parametry połączenia przed wykonaniem. sprawdziłeś to? (przepraszam, za słaby angielski)
źródło
Problem: root @ localhost nie może połączyć się ze świeżą instalacją serwera mysql-community-server na openSUSE 42.2-1.150.x86_64. MySQL odmawia połączenia - kropka.
Rozwiązanie:
Plik user.MYD ma rozmiar 0 (naprawdę?!). Skopiowałem wszystkie 3 pliki z innego działającego systemu.
Byłem w stanie się zalogować. Potem wystarczyło ponownie zastosować wszystkie uprawnienia do schematu. Ponadto, jeśli wyłączyłeś IPv6, włącz go ponownie tymczasowo, aby konto root @ :: 1 mogło również działać.
źródło
Działa to dla DirectAdmin ;
DirectAdmin
.MySQL Management
.database
.Accesse Host
kartą znajduje się pole. Powinieneś wypełnić to pole przezxxx.xx.xxx.xx
.Add Host
.Skończone. Teraz możesz uzyskać dostęp do tej bazy danych za pomocą
your_database_username
&your_database_password
.Tak prosty!
źródło
Wszystkie odpowiedzi tutaj nie działały w moim przypadku, więc goszczę, że może to pomóc innym użytkownikom w przyszłości. Może to być również problemem w naszym kodzie, nie tylko w samym MySQL.
Jeśli używasz
VB.NET
Zamiast tego kodu:
Musisz przejść
MysqlConn = New MySqlConnection()
do pierwszej linii. Tak by byłoźródło