#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. Откройте два сеанса. Подключитесь как суперпользователь к одному и подключитесь как тестовый пользователь к другому. Используйте сеанс суперпользователя для предоставления и отзыва привилегий и тестовый сеанс для выполнения запросов.