Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Начинаем изучать MySQL
<<-[Весь Текст]
Страница: из 157
 <<-
 
db содержит пустое поле host, ему будет запрещена операция записи, даже если 
она разрешена ему согласно таблице db.
Таблицы tables_priv и colums_priv
Эти две таблицы, по сути, уточняют данные, имеющиеся в таблице db. Именно, 
право на всякую операцию сначала проверяется по таблице db, затем по таблице 
tables_priv , затем по таблице columns_priv . Операция разрешается, если одна 
из них дает разрешение. С помощью этих таблиц можно сузить область действия 
разрешений до уровня таблиц и колонок. Управлять этими таблицами можно через 
команды SQL GRANT и REVOKE.
Последовательность контроля доступа
Теперь вы знаете, какие элементы участвуют в системе защиты MySQL. Соединим их 
вместе и покажем, как можно ими пользоваться в реальных ситуациях. MySQL 
осуществляет контроль доступа в два этапа. Первый этап - подключение. 
Необходимо подключиться к серверу, прежде чем пытаться что-либо сделать.
При подключении проводятся две проверки. Сначала MySQL проверяет, есть ли в 
таблице user запись, соответствующая имени пользователя и машины, с которой он 
подключается. Поиск соответствия основывается на правилах, которые мы обсудили 
раньше. Если соответствие не найдено, в доступе отказывается. В случае когда 
соответствующая запись найдена и имеет непустое поле Password , необходимо 
ввести правильный пароль. Неправильный пароль приводит к отклонению запроса на 
подключение.
Если соединение установлено, MySQL переходит к этапу верификации запроса. При 
этом сделанные вами запросы сопоставляются с вашими правами. Эти права MySQL 
проверяет по таблицам user, db, host, tables_priv и columns__priv . Как только 
найдено соответствие в таблице user с положительным разрешением, команда 
немедленно выполняется. В противном случае MySQL продолжает поиск в следующих 
таблицах в указанном порядке:
1. db
2. tables_priv
3. columns_priv
Если таблица db содержит разрешение, дальнейшая проверка прекращается и 
выполняется команда. Если нет, то MySQL ищет соответствие в таблице tables_priv 
. Если, к примеру, это команда SELECT, объединяющая две таблицы, то 
пользователь должен иметь разрешения для обеих этих таблиц. Если хотя бы одна 
из записей отказывает в доступе или отсутствует, MySQL точно таким же способом 
проверяет все колонки в таблице columns_priv .
Утилита mysqlaccess
Освоение системы защиты MySQL поначалу может показаться вам затруднительным. 
Несколько упрощает дело имеющаяся в MySQL утилита mysqlaccess. Эта команда 
является сценарием на языке Perl , который, исходя из имен машины, пользователя 
и базы данных, точно показывает, что данный пользователь может делать и почему. 
Например, команда mysqlaccess nobody isp.com mydata может вывести следующее:
Access-rights
for USER 'nobody', from HOST 'isp.com', to DB 'mydata'

BEWARE: Everybody can access your DB as user 'nobody'
: from host 'isp.com' WITHOUT supplying a password. : Be very careful about 
it!!
The following rules are used: db : 'isp.com','mydata','nobody','Y','Y','Y','Y',
'N',
'N','N','N','N','N'
host : 'Not processed: host-field is not empty in db-table.' 
user : '%', 'nobody', ", 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N'
(Выводится, в частности, предупреждение о том, что база доступна любому, 
регистрирующемуся как «nobody» с машины «isp.com» без ввода пароля, в связи с 
чем нужно проявлять осторожность.)
Как видите, даже если вы полностью разобрались с системой безопасности MySQL, 
утилиту mysqlacces полезно использовать для контроля системы безопасности 
вашего сервера.
Изменение прав доступа
MySQL загружает таблицы доступа при запуске сервера. Преимуществом такого 
подхода по сравнению с динамическим обращением к таблицам является скорость. 
Отрицательная сторона состоит в том, что изменения, производимые в таблицах 
доступа MySQL, не сразу начинают действовать. Для того чтобы сервер увидел эти 
изменения, необходимо выполнить команду mysqladmin reload. Если таблицы 
изменяются с помощью SQL-команд GRANT или REVOKE, явно перегружать таблицы не 
требуется.
По каким-то причинам в некоторых дистрибутивах MySQL сценарий mysqlaccess 
указывает на нестандартное расположение исполняемых файлов Perl. Если при 
попытке выполнить mysqlaccess вы получаете сообщение «command not found», то 
это, скорее всего, ваш случай. Вам необходимо изменить строку 1 сценария 
mysqlaccess, чтобы она указывала на правильный путь к Perl, обычно 
/usr/local/bin/perl.
Утилиты MySQL
ТсХ распространяет MySQL с большим набором вспомогательных утилит, однако набор 
утилит, предлагаемых сторонними разработчиками, еще богаче. В этом параграфе мы 
постараемся дать краткий обзор этих инструментов, отложив полное описание до 
главы 18 «Справочник по РНР и Lite».
Утилиты командной строки (Command Line Tools)
isamchk
 
<<-[Весь Текст]
Страница: из 157
 <<-