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

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

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

Библиотека :: Компьютеры и Программирование :: Начинаем изучать MySQL
<<-[Весь Текст]
Страница: из 157
 <<-
 
операционной системы. По умолчанию кли-ентские средства MySQL используют при 
регистрации имена пользователей операционной системы. Для них, однако, не 
требуется обязательного соответствия. В большинстве клиентских приложений MySQL 
можно с помощью параметра -и подключиться к MySQL, используя любое имя. Точно 
так же ваше имя как пользователя операционной системы не появится в таблице 
user, если не будет специально включено в нее с присвоением прав.
Первый созданный нами пользователь, «bob», может подключаться к базе данных с 
любого компьютера и выполнять команды SELECT, INSERT, UPDATE и DELETE. Второй 
пользователь, «jane», может подключаться с «athens.imaginary.com», не имеет 
пароля и может выполнять только SELECT. Третий пользователь - «nobody» - с 
любой машины.'Этот пользователь вообще ничего не может делать. Последний 
пользователь -«nobody» - с машины «athens.imaginary.com», он может выполнять 
SELECT, INSERT, UPDATE и DELETE, как и пользователь «bob.»
Как MySQL производит сопоставление? Возможно, вы обратили внимание, что 
некоторое имя может соответствовать на деле нескольким записям. Например, 
«[email protected]» соответствует и «nobody@%», и «nobody@athens.
imaginary.com». Прежде чем осуществлять поиск в таблице user, MySQL сортирует 
данные следующим образом:
1. Сначала ищется соответствие для узлов, не содержащих масок « % », при этом 
пустое поле Host трактуется как «% ».
2. Для одного и того же узла сначала проверяется соответствие имен, не 
содержащих масок. Пустое поле User трактуется как содержащее «%».
3. Первое найденное соответствие считается окончательным.
В предыдущем примере пользователь сначала будет сравниваться с «nobody» из 
«athens.imagmary.com», поскольку «athens.imaginary.com» в порядке сортировки 
стоит выше «% ». Поскольку имена компьютеров сортируются раньше имен 
пользователей, значения привилегий для компьютера, с которого вы подключаетесь, 
имеют приоритет перед любыми конкретными правами, которые у вас могут быть. 
Например, если таблица user содержит записи:
HostUser% 
athens .imaginary .comjaneи jane подключается с «athens.imaginary.com», то 
MySQL будет использовать привилегии, данные «athens.imaginary.com».
Таблица db
Вы могли обратить внимание, что в таблице user не упоминаются конкретные базы 
данных и таблицы. Таблица user управляет сервером в целом. Однако на сервере 
обычно находится несколько баз данных, которые служат различным целям и, 
соответственно, обслуживают разные группы пользователей. Права доступа к 
отдельным базам данных хранятся в таблице db. Эта таблица имеет структуру, 
представленную в таблице 4-2:
Таблица 4-2. Таблица db
ПолеТипNullКлючЗначение по умолчаниюПримеч.Hostchar(60)PRIDbchar(32)PRIUser
char(16)PRISelect privenum('N','Y')NInsert_privenum('N','Y')NUpdate_priv
enum('N','Y')NDelete privenum('N','Y')NCreate_privenum('N','Y')NDrop_priv
enum('N','Y')NReferen-enum('N','Y')Nces_privIndex_privenum('N','Y')NAlter_priv
enum('N','Y')NЭта таблица во многом похожа на таблицу user. Основное отличие в 
том, что вместо колонки Password имеется колонка Db. Таблица управляет правами 
пользователей в отношении определенных баз данных. Поскольку привилегии, 
указанные в таблице user, относятся ко всему серверу в целом, права, 
присвоенные пользователю в таблице user, перекрывают права, присвоенные тому же 
пользователю в таблице db. Например, если пользователю в таблице user разрешают 
доступ типа INSERT, это право действует в отношении всех баз данных, вне 
зависимости от того, что указано в таблице db.
Наиболее эффективно создание в таблице user записей для всех пользователей, в 
которых не даны никакие права. В этом случае пользователь может лишь 
подключиться к серверу, не выполняя никаких действий. Исключение делается 
только для пользователя, назначенного администратором сервера. Все остальные 
должны получить права доступа через таблицу db. Каждый пользователь должен 
присутствовать в таблице user, иначе он не сможет подключаться к базам данных.
Те же правила, которые действуют в отношении колонок User и Host в таблице user,
 действуют и в таблице db, но с некоторой особенностью. Пустое поле Host 
вынуждает MySQL найти запись, соответствующую имени узла пользователя, в 
таблице host. Если такой записи не найдено, MySQL отказывает в доступе. Если 
соответствие найдено, MySQL определяет права как пересечение прав, определяемых 
таблицами host и db. Иными словами, в обеих записях разрешение должно иметь 
значение «Y», иначе в доступе отказывается.
Таблица host
Таблица host служит особой цели. Ее структура показана в таблице 4-3:
Таблица 4-3. Таблица Host
ПолеТипNullКлючЗначение по умолчаниюПримеч.Hostchar(60)PRIDbchar(32)PRI
Select_privenum('N','Y')NInsert_privenum('N','Y')NUpdate_privenum('N','Y')N
Delete_privenum('N','Y')NCreate_privenum('N','Y')NDrop_privenum('N','Y')N
Grant_privenum('N','Y')NReferen-enum('NYY')Nces_privIndex_privenum('N','Y')N
Alter_privenum('N','Y')NТаблица host позволяет задать основные разрешения на 
межкомпьютерном уровне. При проверке прав доступа MySQL ищет в таблице db 
соответствие имени пользователя и его машине. Если он находит запись, 
соответствующую имени пользователя, поле host которой пусто, MySQL обращается к 
таблице host и использует пересечение обоих прав для определения окончательного 
права доступа. Например, у вас может быть группа серверов, которые вы считаете 
менее защищенными, чем остальная часть сети. Вы можете запретить для них все 
права записи. Если «bob» заходит с одной из таких машин, и его запись в таблице 
 
<<-[Весь Текст]
Страница: из 157
 <<-