MariaDB cez VPN: ktorý user@host vidí server?
Účet sa vyberá podľa používateľa a hostiteľa spolu. Nájdite zdroj, ktorý server videl, prečítajte CURRENT_USER() a potom opravte ten riadok, nie oprávnenie.
Zadajte rovnaké používateľské meno dvoma rôznymi cestami a MariaDB vás môže overiť ako dva rôzne účty. Účty sú kľúčované podľa používateľa a hostiteľa spolu, takže 'reporter'@'localhost' a 'reporter'@'10.90.0.23' sú samostatné riadky so samostatnými heslami a samostatnými oprávneniami. Cez VPN nie je zaujímavá otázka, aké meno používateľ zadal, ale ktorú zdrojovú adresu server videl.
Určte zdroj, ktorý server skutočne vidí
Postupujte spätne od hostiteľa databázy, nie od notebooku. Adresa, o ktorej si klient myslí, že ju má, je len jedna z niekoľkých možností:
| Path | Source MariaDB sees |
|---|---|
| Routed tunnel, no translation | The client's inner VPN address |
| Gateway source translation | The gateway's translated address |
| SSH local forward | The SSH server's address |
| Public exit, no tunnel | Whatever the ISP handed out |
Použite dôkazy na strane servera, aby ste to rozhodli. Protokol pripojení, zoznam aktívnych relácií alebo dočasný záznam vo všeobecnom protokole ukazujú adresu, ktorú server prijal. Verejná IP adresa notebooku z prehliadača je iný fakt a často zavádzajúci.
Spojte účet, ktorý MariaDB vybrala
Výber účtu sa riadi dokumentovaným poradím, nie zjednotením oprávnení. Presná zhoda hostiteľa má prednosť pred zástupným znakom a riadky anonymného používateľa sa zúčastňujú párovania spôsobmi, ktoré prekvapia tých, čo predpokladajú, že rozhoduje samo meno. Server vyberie jeden riadok; nezlúči oprávnenia každého rovnomenného riadku. Prečítať referenciu raz má väčšiu cenu než popoludnie skúšania odhadov.
To znamená, že pridanie oprávnenia na 'reporter'@'%' nemusí nič zmeniť, ak sa relácia overila ako 'reporter'@'10.90.0.23'. Oprava musí dopadnúť na riadok, ktorý bol vybraný, preto identifikácia účtu predchádza úprave oprávnení.
Prečítajte účet, ktorý relácia skutočne používa
SELECT USER(), CURRENT_USER();
SHOW GRANTS;
CURRENT_USER() pomenúva účet, ktorý overil reláciu; USER() hlási, čo klient požadoval, a môže sa líšiť. Spúšťajte ich ako bežné dotazy najvyššej úrovne, nie z uloženej rutiny s kontextom definujúceho používateľa, inak odpovede opisujú vlastníka rutiny namiesto vašej relácie.
Neúspešné prihlásenie nemôže spustiť nič z toho a to je prípad, keď musí správca preskúmať definície účtov a dôkazy o pripojení servera. Naplánujte to: človek, ktorý ladí odmietnuté prihlásenie, zvyčajne nemá žiadnu SQL reláciu na dopytovanie.
Oddeľte dostupnosť od autentifikácie
Text chyby vám hovorí, v ktorej vrstve ste. Odmietnuté pripojenie alebo vypršanie času znamená, že klient nikdy nedosiahol poslucháča, takže účet a jeho heslo ešte nie sú v hre. Odpoveď o odmietnutom prístupe znamená, že server odpovedal, čo dokazuje dostupnosť a ukazuje na účet, zhodu hostiteľa alebo prihlasovací údaj.
Sieťové predpoklady sú samostatný zoznam: poslucháč viazaný na zamýšľanú adresu a nielen na loopback, povolená prevádzka na nakonfigurovaný port a spätná trasa pre odpoveď. Každý môže zlyhať nezávisle a fungujúci tunel neznamená ani jeden z nich. Poslucháč na loopbacku prijíma lokálne pripojenia a odmieta každé vzdialené, čo vytvára odmietnuté pripojenie, ktoré vyzerá ako blokovanie firewallom.
Skontrolujte adresu väzby pred otvorením tiketu pre sieťový tím. ss -lntp na hostiteľovi databázy ukazuje, ktorá adresa a port skutočne načúvajú, a ten jediný riadok vylučuje celú kategóriu odhadov.
Opravujte úzko, potom otestujte oba smery
Vytvorte zamýšľaný účet kvalifikovaný hostiteľom schváleným procesom organizácie, s prihlasovacím údajom z podporovaného úložiska, nie so zdieľaným vloženým do tiketu. Udelnite len operácie so schémou, ktoré úloha potrebuje. Premena neúspešného vzdialeného prihlásenia na root účet, politiku udeliť všetko alebo plošný zástupný hostiteľ nechá test prejsť a odstráni kontrolu, ktorú ste testovali. Oprávnenie pridané v zhone je to, ktoré neskôr nikto neodstráni.
Otestujte znova s čerstvou reláciou zamýšľanou cestou a potom skontrolujte negatívne prípady. Cesta, ktorá má byť zablokovaná, musí zostať zablokovaná, a operácia, ktorá nebola udelená, musí zostať zamietnutá. Tieto dve kontroly odlišujú opravený účet od rozšíreného.
Nakoniec zaznamenajte pozorovanú zdrojovú adresu a názov účtu spolu. Tunel poskytuje dostupnosť; MariaDB stále volí a autorizuje svoj vlastný účet a ďalší človek potrebuje oba fakty, aby reprodukoval váš výsledok.