Какие привилегии ПРЕДОСТАВЛЯТЬ (SQL) для этого кода (тестовое назначение)

#mysql #sql #database #privileges #grant

#mysql #sql #База данных #привилегии #sql-предоставить

Вопрос:

ОБНОВЛЕНИЕ НАБОРА приложений Принято =’YES’, В КОТОРОМ УКАЗАН stID (ВЫБЕРИТЕ stID У учащегося, оценки которого> 3.9);

Итак, вопрос в том, какие привилегии предоставить пользователю, которому необходимо успешно запустить этот код.

Я предполагаю, что:

ОБНОВИТЕ разрешение в приложении, ВЫБЕРИТЕ в приложении и ВЫБЕРИТЕ в Student, поэтому ОБНОВЛЕНИЕ для Student не требуется.

Вопрос заключается в том, требуется ли ВЫБОР в приложении (?) (Из-за части WHERE) и требуется ли ОБНОВЛЕНИЕ для Student (я почти уверен, что этот ответ отрицательный).

Тоже другой вопрос:

запрос: УДАЛИТЬ ИЗ Student, В КОТОРОМ НЕТ stID (ВЫБЕРИТЕ stID ИЗ приложения)

вопрос: Какие из этих привилегий не требуются? a) Удалить у ученика

б) Выберите для учащегося

c) Удалить в приложении

d) Выберите в приложении

В основном, эти ответы — это то, в чем мне нужно быть уверенным, просто спрашивая ваше мнение.

Ответ №1:

ОБНОВИТЕ разрешение в приложении, ВЫБЕРИТЕ в приложении и ВЫБЕРИТЕ в Student, поэтому ОБНОВЛЕНИЕ для Student не требуется.

Это верно.

Вопрос спрашивает, требуется ли ВЫБРАТЬ в приложении (?) (Из-за части WHERE)

Привилегии SELECT требуются в приложении из-за предложения WHERE. Оператор обновления, подобный этому

 update application set accepted = 'yes';
  

не требует привилегий SELECT.

и требуется ли ОБНОВЛЕНИЕ для Student (я почти уверен, что это «нет»).

Никто не пытается обновить Student. Привилегии ОБНОВЛЕНИЯ для Student не требуются.

Все это легко протестировать. Установите бесплатную базу данных с открытым исходным кодом, такую как PostgreSQL. Откройте два сеанса. Подключитесь как суперпользователь к одному и подключитесь как тестовый пользователь к другому. Используйте сеанс суперпользователя для предоставления и отзыва привилегий и тестовый сеанс для выполнения запросов.