Внесете го истото корисничко име од два различни патишта и MariaDB може да ве автентификува како две различни сметки. Сметките се врзани за корисникот и домаќинот заедно, затоа 'reporter'@'localhost' и 'reporter'@'10.90.0.23' се одделни редови со одделни лозинки и одделни дозволи. Преку VPN, интересното прашање не е кое име го внел корисникот, туку која изворна адреса ја видел серверот.

Утврдете го изворот што серверот навистина го гледа

Работете наназад од домаќинот на базата на податоци, а не од преносниот сметач. Адресата што клиентот мисли дека ја има е само една од неколкуте можности:

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

Употребете докази од страната на серверот за да го решите тоа. Дневникот на врски, списокот на активни сесии или привремен запис во општиот дневник ја покажуваат адресата што серверот ја прифатил. Јавната IP адреса на преносниот сметач од прелистувач е друг факт и често е заблудувачки.

Совпаѓајте ја сметката што MariaDB ја избра

Изборот на сметка следи документиран редослед, а не обединување на дозволи. Точно совпаѓање на домаќинот има предност пред џокер знак, а редовите на анонимен корисник учествуваат во совпаѓањето на начини што ги изненадуваат оние што претпоставуваат дека само името одлучува. Серверот избира еден ред; тој не ги спојува привилегиите на секој истоимен ред. Едно читање на референцата вреди повеќе од попладне испробување претпоставки.

Тоа значи дека додавањето дозвола на 'reporter'@'%' можеби ништо нема да смени ако сесијата се автентификувала како 'reporter'@'10.90.0.23'. Поправката мора да падне на редот што бил избран, затоа идентификувањето на сметката доаѓа пред уредувањето на дозволите.

Прочитајте ја сметката што сесијата навистина ја користи

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

CURRENT_USER() го именува сметката што ја автентификувала сесијата; USER() известува што побарал клиентот и може да се разликува. Извршете ги како обични барања на највисоко ниво, а не од зачувана рутина со контекст на дефинирач, инаку одговорите го опишуваат сопственикот на рутината наместо вашата сесија.

Неуспешното најавување не може да изврши ништо од ова, и тоа е случајот кога администраторот мора да ги провери дефинициите на сметките и доказите за врска на серверот. Планирајте го тоа: лицето што отстранува грешка при одбиено најавување обично нема SQL сесија за прашања.

Одвојте ја достапноста од автентикацијата

Текстот на грешката ви кажува во кој слој сте. Одбиена врска или истекување на времето значи дека клиентот никогаш не стигнал до слушач, па сметката и нејзината лозинка уште не се во прашање. Одговор за одбиен пристап значи дека серверот одговорил, што докажува достапност и укажува на сметката, совпаѓањето на домаќинот или акредитивот.

Мрежните предуслови се свој список: слушач врзан за предвидената адреса, а не само за loopback, дозволен сообраќај до конфигурираната порта и повратна рута за одговорот. Секој може независно да не успее, а тунелот што работи не подразбира ниту еден од нив. Слушач на loopback прифаќа локални врски и одбива секоја далечна, што создава одбиена врска што изгледа како блокирање од огнен ѕид.

Проверете ја адресата за врзување пред да отворите билет кај мрежниот тим. ss -lntp на домаќинот на базата на податоци покажува која адреса и порта навистина слушаат, и тој еден ред ја исклучува целата категорија претпоставки.

Поправете тесно, потоа тестирајте ги двата правци

Создадете ја предвидената сметка квалификувана за домаќинот преку одобрениот процес на организацијата, со акредитив од поддржаното складиште, а не со заеднички залепен во билет. Доделете ги само операциите над шемата што му се потребни на задатокот. Претворањето на неуспешно далечно најавување во root сметка, политика за давање на сите дозволи или општ џокер домаќин го поминува тестот и ја отстранува контролата што ја тестиравте. Дозволата што ја додадовте набрзина е онаа што подоцна никој не ја отстранува.

Тестирајте повторно со свежа сесија по предвидениот пат, потоа проверете ги негативните случаи. Патот што треба да биде блокиран мора да остане блокиран, а операцијата што не била доделена мора да остане одбиена. Тие две проверки го разликуваат поправената сметка од проширената.

На крајот, запишете ја забележаната изворна адреса и името на сметката заедно. Тунелот обезбедува достапност; MariaDB уште ја избира и авторизира сопствената сметка, а следното лице ги има двете факти за да го репродуцира вашиот резултат.

Поврзани статии