Upišite isto korisničko ime s dva različita puta i MariaDB vas može autentificirati kao dva različita računa. Računi se vežu uz korisnika i host zajedno, pa su 'reporter'@'localhost' i 'reporter'@'10.90.0.23' odvojeni reci s odvojenim lozinkama i odvojenim dopuštenjima. Preko VPN-a zanimljivo pitanje nije koje je ime korisnik upisao, nego koju je izvornu adresu poslužitelj vidio.

Utvrdite izvor koji poslužitelj doista vidi

Radite unatrag od hosta baze podataka, a ne od prijenosnika. Adresa za koju klijent misli da je ima samo je jedna od nekoliko moguć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

Upotrijebite dokaze sa strane poslužitelja da to riješite. Zapisnik veza, popis aktivnih sesija ili privremeni unos u općem zapisniku pokazuje adresu koju je poslužitelj prihvatio. Javna IP adresa prijenosnika iz preglednika druga je činjenica i često obmanjujuća.

Uparite račun koji je MariaDB odabrao

Odabir računa slijedi dokumentirani poredak, a ne uniju dopuštenja. Točno podudaranje hosta ima prednost pred zamjenskim znakom, a reci anonimnog korisnika sudjeluju u podudaranju na načine koji iznenađuju ljude koji pretpostavljaju da samo ime odlučuje. Poslužitelj odabire jedan redak; ne spaja privilegije svakog istoimenog retka. Jedno čitanje referencije vrijedi više od poslijepodneva testiranja nagađanja.

To znači da dodavanje dopuštenja na 'reporter'@'%' možda ništa ne mijenja ako se sesija autentificirala kao 'reporter'@'10.90.0.23'. Popravak mora pasti na redak koji je odabran, zato identifikacija računa dolazi prije uređivanja dopuštenja.

Pročitajte račun koji sesija doista rabi

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

CURRENT_USER() imenuje račun koji je autentificirao sesiju; USER() izvješćuje što je klijent zatražio i može se razlikovati. Izvršite ih kao obične upite najviše razine, a ne iz pohranjene rutine s kontekstom definirajućeg korisnika, inače odgovori opisuju vlasnika rutine umjesto vaše sesije.

Neuspješna prijava ne može izvršiti ništa od ovoga, a to je slučaj kada administrator mora pregledati definicije računa i dokaze o vezama na poslužitelju. Planirajte to: osoba koja otklanja grešku odbijene prijave obično nema SQL sesiju za upite.

Odvojite dostupnost od autentifikacije

Tekst pogreške govori vam na kojem ste sloju. Odbijena veza ili istek vremena znači da klijent nikada nije stigao do slušatelja, pa račun i njegova lozinka još nisu upitni. Odgovor o odbijenom pristupu znači da je poslužitelj odgovorio, što dokazuje dostupnost i upućuje na račun, podudaranje hosta ili vjerodajnicu.

Mrežni preduvjeti zaseban su popis: slušatelj vezan na predviđenu adresu, a ne samo na loopback, dopušten promet na konfigurirani port i povratna ruta za odgovor. Svaki može zasebno zakazati, a tunel koji radi ne podrazumijeva nijedan od njih. Slušatelj na loopbacku prihvaća lokalne veze i odbija svaku udaljenu, što stvara odbijenu vezu koja izgleda kao blokada vatrozida.

Provjerite adresu vezanja prije nego otvorite zahtjev mrežnom timu. ss -lntp na hostu baze podataka pokazuje koja adresa i port doista slušaju, a taj jedan redak isključuje cijelu kategoriju nagađanja.

Popravite usko, pa ponovno testirajte u oba smjera

Stvorite predviđeni račun kvalificiran hostom kroz odobreni proces organizacije, s vjerodajnicom iz podržanog spremišta, a ne zajedničkom zalijepljenom u zahtjev. Dodijelite samo operacije nad shemom koje zadatak treba. Pretvaranje neuspješne udaljene prijave u root račun, politiku dodjele svega ili široki zamjenski host čini da test prođe i uklanja kontrolu koju ste testirali. Dopuštenje koje ste dodali u žurbi ono je koje kasnije nitko ne uklanja.

Ponovno testirajte svježom sesijom kroz predviđeni put, pa provjerite negativne slučajeve. Put koji treba biti blokiran mora ostati blokiran, a operacija koja nije dodijeljena mora ostati odbijena. Te dvije provjere razlikuju popravljen račun od proširenog.

Na kraju, zabilježite uočenu izvornu adresu i ime računa zajedno. Tunel daje dostupnost; MariaDB i dalje bira i autorizira vlastiti račun, a sljedećoj osobi trebaju obje činjenice da reproducira vaš rezultat.

Povezani članci