Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_na_SUBD.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
221.84 Кб
Скачать
  1. Общие принципы организации разграничения прав доступа пользователей в MySql.

1.Не предоставлять никому, за исключением root доступа к таблице user базы данных mysql

2.Запретить доступ к файлам на уровне файловой системы

3.Никому не разрешать использование команды LOAD

Система безопасности построена на основе системы привилегий, которая предполагает, что каждый пользователь получает определенный привилегии, то есть указывается какие операции с какими объектами пользователь имеет право производить.

Привилегии на сервере бывают 3 типов:

1)глобальные – на все объекты сервера

2)уровня БД – на конкретную БД

3)уровня таблицы- на конкретную таблицу конкретной БД

4)уровня столбца – на указанный столбец указанной таблицы

Идентификация пользователя производится по имени, паролю и хосту или его IP.

Проверка права на подсоединение к серверу: mysql-клиент предъявляет имя пользователя, сервер определяет имя (или IP) хоста клиента. По данной паре ищется строка в таблице user. Если строка не найдена, то соединение отвергается. Если - найдена, то сверяется пароль.

Проверка прав при исполнении каждого запроса. Для административных запросов и доступа к файлам проверяется только таблица user. Для прочих запросов в начале проверяется таблица user - а нет ли у данного пользователя прав доступа на "глобальном" уровне. Если есть - операция разрешается. Если нет, то проверяются права доступа к конкретной БД с конкретного хоста. Если их достаточно, то доступ дается. Если недостаточно, то к объединению "глобальных" прав и прав БД/хост добавляются права, извлеченные из таблиц tables_priv и columns_priv. Если и этого не хватает, то увы...

"Глобальные" привилегии и изменения пароля вступают в силу только при следующем соединении. Изменения в доступе к БД - при следующей команде use. Изменения в доступе к таблицам и колонкам - при следующем запросе.

Если привилегии на уровне таблиц и колонок используются хотя бы для одного пользователя, то проверки делаются для всех запросов всех пользователей, что очень сильно замедляет работу.

  1. Задание прав глобального уровня.

Глобальные привилегии читаются при присоединении пользователя и применяются. В таблице user записаны все пользователи, даже те, кто не имеет к ней доступ. Все привилегии не глобального уровня проверяются при каждом запросе пользователя

Структура таблицы mysql.user

Host char(60) символьный хранится имя или ip-адрес компа, с кот подключается поль-зователь. Можно использовать шаблоны с символами '%' (любое количество любых символов) и '_' (любой символ).

User char(16) символьный хранится имя пользователя. Пустое поле соответствует лю-бому имени, в данном случае пользователь рассматривается как анонимный и предо-ставленное им имя заменяется на пустое для дальнейших проверок прав доступа.

Password символьный зашифрованный пароль пользователя. Может быть пустым - пользователь также должен предъявить пустой пароль

Привилегии: enum('N','Y'), по умолчанию - 'N'

• select - выборка из строк таблицы

• insert - вставка строки в таблицу

• update - изменение строки таблицы

• delete - удаление строки таблицы

• create - создавать БД/таблицу

• drop - удалять БД/таблицу

• reload - позволяет перечитать таблицу привилегий

• shutdown – разрешает закрытие сервера

• process – разрешает просмотр процесса

• file – разрешает экспорт/импорт данных

• grant – разрешает передавать свои привилегии другим

• index - создавать/удалять индексы таблицы

• alter - изменять формат таблицы, в том числе переименовать ее, что позволяет об-мануть систему прав доступа

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]