Vnesite isto uporabniško ime po dveh različnih poteh in MariaDB vas lahko overi kot dva različna računa. Računi so vezani na uporabnika in gostitelja skupaj, zato sta 'reporter'@'localhost' in 'reporter'@'10.90.0.23' ločeni vrstici z ločenima gesloma in ločenimi dovoljenji. Prek VPN ni zanimivo vprašanje, katero ime je uporabnik vnesel, ampak kateri izvorni naslov je strežnik videl.

Ugotovite vir, ki ga strežnik resnično vidi

Delajte vzvratno od gostitelja podatkovne baze, ne od prenosnika. Naslov, za katerega odjemalec misli, da ga ima, je le ena od več možnosti:

PathSource MariaDB sees
Routed tunnel, no translationThe client's inner VPN address
Gateway source translationThe gateway's translated address
SSH local forwardThe SSH server's address
Public exit, no tunnelWhatever the ISP handed out

Za odločitev uporabite dokaze na strani strežnika. Dnevnik povezav, seznam aktivnih sej ali začasen vnos v splošnem dnevniku pokažejo naslov, ki ga je strežnik sprejel. Javni IP prenosnika iz brskalnika je drugo dejstvo in pogosto zavajajoče.

Ujemite račun, ki ga je izbrala MariaDB

Izbira računa sledi dokumentiranemu vrstnemu redu in ne združitvi dovoljenj. Natančno ujemanje gostitelja ima prednost pred nadomestnim znakom, vrstice anonimnega uporabnika pa sodelujejo pri ujemanju na načine, ki presenetijo ljudi, ki domnevajo, da odloča samo ime. Strežnik izbere eno vrstico; ne združi privilegijev vsake istoimenske vrstice. Enkratno branje referenčne dokumentacije je vredno več kot popoldne preizkušanja ugibanj.

To pomeni, da dodajanje dovoljenja na 'reporter'@'%' morda ne spremeni ničesar, če se je seja overila kot 'reporter'@'10.90.0.23'. Popravek mora pristati na vrstici, ki je bila izbrana, zato identifikacija računa pride pred urejanjem dovoljenj.

Preberite račun, ki ga seja dejansko uporablja

SELECT USER(), CURRENT_USER();
SHOW GRANTS;

CURRENT_USER() imenuje račun, ki je overil sejo; USER() poroča, kaj je odjemalec zahteval, in se lahko razlikuje. Izvajajte jih kot običajne poizvedbe najvišje ravni, ne iz shranjene rutine s kontekstom določevalca, sicer bodo odgovori opisali lastnika rutine namesto vaše seje.

Neuspešna prijava ne more izvesti ničesar od tega in to je primer, ko mora skrbnik pregledati definicije računov in dokaze o povezavi strežnika. Načrtujte to: oseba, ki razhroščuje zavrnjeno prijavo, običajno nima seje SQL za poizvedovanje.

Ločite dosegljivost od overjanja

Besedilo napake vam pove, v katerem sloju ste. Zavrnjena povezava ali potekla časovna omejitev pomeni, da odjemalec nikoli ni dosegel poslušalca, zato račun in njegovo geslo še nista vprašljiva. Odgovor o zavrnjenem dostopu pomeni, da je strežnik odgovoril, kar dokazuje dosegljivost in kaže na račun, ujemanje gostitelja ali poverilnico.

Omrežni pogoji so svoj seznam: poslušalec, vezan na predvideni naslov in ne le na loopback, dovoljen promet do konfiguriranih vrat in povratna pot za odgovor. Vsak lahko odpove neodvisno, delujoč tunel pa ne pomeni nobenega od njih. Poslušalec na loopbacku sprejema lokalne povezave in zavrača vsako oddaljeno, kar ustvari zavrnjeno povezavo, ki je videti kot blokada požarnega zidu.

Preverite naslov vezave, preden odprete zahtevek pri omrežni ekipi. ss -lntp na gostitelju podatkovne baze pokaže, kateri naslov in vrata dejansko poslušajo, in ta ena vrstica izključi celo kategorijo ugibanj.

Popravite ozko, nato preizkusite obe smeri

Ustvarite predvideni račun, kvalificiran z gostiteljem, po odobrenem postopku organizacije, s poverilnico iz podprtega skladišča in ne s skupno, prilepljeno v zahtevek. Dodelite samo operacije s shemo, ki jih naloga potrebuje. Pretvorba neuspešne oddaljene prijave v root račun, politiko dodelitve vsega ali splošnega nadomestnega gostitelja naredi, da test uspe, in odstrani nadzor, ki ste ga preizkušali. Dovoljenje, dodano v naglici, je tisto, ki ga kasneje nihče ne odstrani.

Znova preizkusite s svežo sejo po predvideni poti in nato preverite negativne primere. Pot, ki bi morala biti blokirana, mora ostati blokirana, operacija, ki ni bila dodeljena, pa mora ostati zavrnjena. Ta dva preverjanja ločita popravljen račun od razširjenega.

Nazadnje zabeležite opaženi izvorni naslov in ime računa skupaj. Tunel zagotavlja dosegljivost; MariaDB še vedno izbere in avtorizira svoj račun, naslednja oseba pa potrebuje obe dejstvi, da reproducira vaš rezultat.

Sorodni članki