valerium
@valerium
Изобретая велосипед

Как реализовать авторизацию пользователей средствами MySQL?

Есть идея забацать проект, состоящий из большой базы данных и разношёрстных клиентов на несколько платформ (Android, iOS, Linux, Windows). Подразумевается создание отдельной учётки для каждого пользователя.

Вопрос в том, можно ли спихнуть задачи авторизации на СУБД (например, MySQL или PostgreSQL)?
Я себе это представляю так, что на каждого пользователя заводится учётка и ему выделяется персональная таблица под личные данные. Пользователь получает права на запись в свою таблицу, на чтение из "публичных" таблиц и на чтение из персональных таблиц друзей. Права доступа в той же MySQL очень даже гибко настраиваются.

Вопросов несколько.
  1. Насколько это безопасно? Никогда не видел тестов надёжности СУБД, смотрящих прямо в сеть.
  2. Насколько это эффективно? Сможет ли какой-нибудь MySQL обрабатывать прямые запросы от нескольких тысяч пользователей?
  3. Так действительно никто не делает, или я что-то упустил в этой жизни?
  4. Ну и, собственно, если никто не делает, то почему?
  • Вопрос задан
  • 2656 просмотров
Пригласить эксперта
Ответы на вопрос 2
metamorph
@metamorph
В max_connections уткнетесь.

Вам придется либо шпиговать сервер памятью, либо при любом удобном случае закрывать пользовательское соединение с БД.

В гипотетической ситуации, когда max_connections == 100, и сто пользователей открыли соединение и тупят - сто первый пользователь получит отлуп (если только он не суперюзер).
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
обычно между клиентом и субд есть такая мелочь как сервер, собственно и реализующий авторизацию, работу с данными и т.д. и предоставляет клиенту API (rest api)

Никто так не делает как минимум потому, что это не удобно и непрактично. Возникают проблемы с расширяемостью, возрастает связанность системы ну и в конце концов СУБД не предназначены для подобного.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы