Въведете същото потребителско име по два различни пътя и 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 все още избира и оторизира собствения си акаунт, а следващият човек се нуждае от двата факта, за да възпроизведе резултата ви.

Подобни статии