Puncte:0

Eroare de conectare a conectorului MySQL/ODBC în urma unei nepotriviri DNS

drapel cn

Am probleme la configurarea unei noi conexiuni MySQL cu Surse de date ODBC (64 de biți) utilitar pe un Windows Server 2019. Folosesc MySQL Workbench pentru a defini accesele de la distanță după cum urmează:

introduceți descrierea imaginii aici

Utilizatorului i se acordă a SELECTAȚI doar acces:

introduceți descrierea imaginii aici

Am observat că serverul de la care trebuie să inițiez conexiunea (srv-bo) are o adresă IP statică care a fost deja folosită în trecut de un alt server (srv-mooc). Intrarea veche a serverului la distanță a persistat în controlerul de domeniu DNS, așa că am șters-o. De atunci, cel Surse de date ODBC (64 de biți) utilitarul continuă să încerce să se conecteze cu numele vechiului server (srv-mooc)... Se pare că unele informații de conexiune sunt păstrate în amintiri undeva, dar nu îmi pot da seama.

Până acum, am încercat să șterg memoria cache DNS de pe Windows Server 2019 de la care inițiez conexiunea. De asemenea, am încercat să configurez conexiunea de la o altă sesiune de utilizator și după repornirea serverului. Problema este încă acolo:

introduceți descrierea imaginii aici

Mesaj de eroare:

introduceți descrierea imaginii aici

Acreditările utilizatorului funcționează bine de la un alt Windows Server 2019, așa că detaliile de conectare sunt bune.

Vreo idee de ajutor?

Thomas

vidarlo avatar
drapel ar
Se pare că utilizatorului nu i se permite să se conecteze de la gazda de la care se conectează. Acest lucru ar explica de ce funcționează de la o altă mașină. Cum este definită de utilizator partea serverului? https://www.javatpoint.com/mysql-show-users
wiltomap avatar
drapel cn
Mulțumiri. Utilizatorul are voie, de fapt.Am autorizat doar serverul `srv-abc` de pe care utilizatorul poate accesa DB. Dacă elimin acest filtru și autorizez orice server, problema nu mai există... Se pare într-adevăr că este o problemă de DNS.
vidarlo avatar
drapel ar
Mesajul de eroare spune că utilizatorul se conectează de la `srv-mooc.siveer.fr`...
wiltomap avatar
drapel cn
Îmi pare rău că mi-am editat postarea inițială pentru a fi mai clar.
vidarlo avatar
drapel ar
Niciun motiv să-mi pare rău :) Întrebările mele au fost pentru a face întrebarea mai bună - și astfel a face mai probabil să obțineți un răspuns bun :) Este ușor să treceți cu vederea detaliile în ceea ce scriem!
Manu avatar
drapel us
poți face o căutare inversă DNS? Nu știu dacă este necesar, dar poate fi. Scrie srv-bo% cu litere mici... pentru orice eventualitate ;)
wiltomap avatar
drapel cn
Căutarea inversă DNS este bine și indică numele serverului corect. `srv-bo%` cu litere mici nu schimbă nimic...
drapel cn
Serverul MySQL este legat de un anumit interval IP?
wiltomap avatar
drapel cn
Da, dar este o gamă clasică de 254 de adrese, în care sunt incluse ambele servere (cele vechi și cele actuale).
Puncte:1
drapel us

Este foarte posibil ca MySQL să mențină un cache DNS intern al gazdelor. Pentru un test rapid și murdar, încercați SETARE GLOBAL host_cache_size=0; pe server (dacă încărcarea DNS este o problemă, nu uitați să o resetați la o valoare diferită de zero după testare).

Editare: Pentru un MySQL 5.5 încercați a FLUSH GAZDE;

Referinte: https://dev.mysql.com/doc/refman/8.0/en/host-cache.html#host-cache-flushing http://download.nust.na/pub6/mysql/doc/refman/5.5/en/dns.html

wiltomap avatar
drapel cn
Bună idee! ...dar (scuze) tabelul `mysql.host` de pe serverul la distanță este gol (presupun că `host_cache_size` este deja setat la 0). Pe serverul de la care inițiez conexiunea, nu am instanță locală MySQL.
Brandon Xavier avatar
drapel us
Dacă verificați tabelele manual, veți dori să vă uitați la `mysql.host_cache` spre deosebire de `mysql.host`
wiltomap avatar
drapel cn
Nu am un astfel de tabel... Versiunea MySQL este 5.5.62.
Brandon Xavier avatar
drapel us
Vedeți editările pentru 5.5 MySQL (care ar fi fost la îndemână de știut în prealabil:-)
Brandon Xavier avatar
drapel us
Un ultim comentariu, `host_cache` este de fapt expus (în versiunile >= 5.6) prin pseudo DB `performance_schema`, nu prin `mysql` (mapează structurile de date din memorie la tabele asemănătoare SQL)
Puncte:0
drapel ng

Puteți încerca să editați acest fișier C:\Windows\System32\drivers\etc\hosts în care sunt stocate toate înregistrările DNS locale. De asemenea, vă rugăm să verificați care este răspunsul actualului server DNS pe care îl folosește Windows, se pare că are o înregistrare PTR undeva.

wiltomap avatar
drapel cn
Fișierul `hosts` este cel implicit, cred (toate liniile sunt comentate și nu `srv-mooc`). Nu găsesc nicio intrare în Domain Controller DNS. Comanda `nslookup` returnează numele serverului potrivit, nu cel vechi. Nu găsesc nicio înregistrare PTR, nicăieri...
Zhivko Zhelev avatar
drapel ng
Când creați regula pentru a bloca alte conexiuni, cum specificați numele gazdei celei permise?
wiltomap avatar
drapel cn
Am introdus `srv-bo%` deoarece am nevoie de un alt server numit `srv-bo-rct` pentru a mă putea conecta. Am încercat să introduc `srv-bo` fără wildcard, dar problema persistă.
Zhivko Zhelev avatar
drapel ng
Nu sunt sigur cum va funcționa asta. Vă sugerez să permiteți ambele gazde separat cu numele complet, acest lucru ar trebui să facă treaba. Vă rugăm să verificați răspunsul.
wiltomap avatar
drapel cn
Nu, nu. După cum am scris în comentariul meu anterior, am încercat să introduc singur `srv-bo` și am aceeași eroare.
Zhivko Zhelev avatar
drapel ng
```ACORDĂ TOATE PRIVILEGIILE PE DB.* CĂTRE srv-mooc@'srv-mooc.siveer.fr' IDENTIFICAT DE ``parolă';``` ca aceasta, nu?
wiltomap avatar
drapel cn
Folosesc *MySQL Workbench* pentru a defini accesele de la distanță. Deci, aceasta este definită în această interfață a aplicației, în câmpul de filtrare.
wiltomap avatar
drapel cn
Tocmai am actualizat postarea inițială cu capturi de ecran pentru *MySQL Workbench*.
Zhivko Zhelev avatar
drapel ng
da, mai bine, introduceți ```hostname``` în promptul de comandă de pe serverul Windows
Zhivko Zhelev avatar
drapel ng
și este posibil să creați doar doi utilizatori diferiți pentru db și să specificați numele de gazdă complete?
wiltomap avatar
drapel cn
Comanda `hostname` returnează `SRV-BO` așa cum era de așteptat. Crearea unui utilizator nou filtrat din `SRV-BO` dă doar aceeași eroare. De asemenea, am încercat să autorizez orice server introducând doar caracterul metalic `%`, fără a mai avea succes...
Zhivko Zhelev avatar
drapel ng
încercați să acordați mai multe permisiuni acestui utilizator ```srv-bo```
wiltomap avatar
drapel cn
Acelasi rezultat, din pacate...
Zhivko Zhelev avatar
drapel ng
Cred că ceva s-a încurcat cu setările DNS, ați spus când ați șters această înregistrare veche după ce a apărut problema, așa că vă rugăm să le verificați din nou
wiltomap avatar
drapel cn
Problema a apărut întotdeauna, fie înainte, fie după ștergerea intrării DNS nedorite. Cred că nu ar fi trebuit să încerc să inițiez conexiunea înainte de a șterge intrarea DNS. După cum am scris în postarea mea, cred că un fel de cache este stocat undeva, dar nu în locații sau fișiere obișnuite...
Zhivko Zhelev avatar
drapel ng
Acest lucru este dezavantaj deoarece toate interogările dns au un ttl (time to live) care poate fi de maxim 3600 de secunde și dacă acest timp trece ar trebui să rezolve noul nume de gazdă... Idee: creați o înregistrare CNAME din ```srv-mooc.siveer. fr la srv-bo.siveer.fr și vedeți dacă va funcționa
Puncte:0
drapel cn

După multe căutări și ajutor prețios în diferitele comentarii, în cele din urmă am reușit să rezolv problema executând un FLUSH GAZDE; Interogare SQL în editorul de interogări de pe serverul la distanță.

Consultați documentația MySQL 5.5 Aici.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.