|
Программирование >> Программный интерфейс приложений
бинациями в одном столбце. Более эффективное представление привилегий в последних двух таблицах объясняется тем, что они появились гораздо позже, чем первые три. (Вполне возможно, что в будущем таблицы user, db и host будут реорганизованы и привилегии в них будут задаваться с помощью типа SET.) Например, столбец Table priv таблицы tables priv определяется следующим образом: SET(Select,Insert,Update,Delete,Create,Drop,Grant, Reference,Index,Alter) Столбец Column priv таблицы column priv определяется так: SET (Select,Insert,Update,Reference) Привилегий столбцов гораздо меньше, чем привилегий таблиц, поскольку на уровне столбца можно выполнить гораздо меньше операций. Так, например, можно создать новую таблицу, но невозможно создать отдельный столбец. Таблица user, помимо всего прочего, содержит несколько привилегий, которые отсутствуют во всех других таблицах разрешений: File priv, Process priv, Reload priv и Shutdown priv. Эти привилегии применяются к выполняемым сервером операциям, не связанным с отдельной базой данных или таблицей. Ведь при необходимости завершения работы сервера вовсе необязательно проверять, над какой базой данных в настояшее время ведется работа. Как сервер управляет доступом клиентов Сервер MySQL выполняет контроль за доступом клиентов в два этапа. Первый этап имеет место при попытке подключения, когда сервер заглядывает в таблицу user и ищет все соответствующие этому имени записи, например, название компьютера, с которого можно подключаться, и пароль. Если ни одна запись с аналогичными значениями не найдена, пользователю отказывается в подключении. Если же вся предоставленная пользователем информация соответствует информации, записанной в таблице, соединение устанавливается, и сервер переходит ко второму этапу. В процессе этого этапа каждый раз при получении от пользователя запроса сервер обращается к таблицам разрешений и проверяет, обладает ли пользователь достаточными привилегиями для выполнения того или иного запроса. Второй этап продолжается до завершения сеанса работы с сервером. Этот раздел посвящен описанию правил, используемых сервером MySQL для проверки соответствия записей таблиц разрешений с входящими запросами клиента. В нем описываются типы значений, применяемые в столбцах области таблиц разрешений, способы комбинирования информации; рассказывается о привилегиях в таблицах разрешений и порядке проверки записей таблицы. Содержимое столбцов области доступа в некоторых столбцах области необходимо вводить буквенные значе-шя, однако в большинстве из них можно использовать также специаль-ше символы. Host. Значение столбца Host может представлять собой имя компьютера или его IP-адрес. Значение localhost соответствует локальному компьютеру, однако рекомендуется использовать его только в том случае, если данный компьютер действительно имеет имя localhost. Представим ситуацию, когда локальный компьютер имеет имя pit-viper. snake и для одного uojibJOuaiCJiM ki.ic ется две записи в таблице user. Одна запись в столбце Host имеет значение localhost, а вторая - pit-viper.snake.net. Первая запись будет использоваться только при подключении к компьютеру localhost, а вторая - к компьютеру pit-viper, snake . net. Если необходимо, чтобы пользователи имели возможность подключиться с помошью любого из этих способов, следует оставить обе эти записи в таблице user. Значения столбца Host также можно задать с помошью шаблона. Так, можно использовать распространенные в SQL символы % и имеюшие такое же значение, как и в строке запроса с оператором LIKE. (REGEX-шаблоны ДЛЯ этих целей неприменимы.) Символы шаблона SQL можно применять при определении как имен, так и IP-адресов. Строке %.wisc.edu, например, соответствуют все компьютеры домена wisc.edu, а строке %.edu - компьютеры всех подключенных к сети организаций системы образования. Аналогичным образом, строка 192.168.% описывает все компьютеры подсети оасса В 192.168, а строка 192.168.3.% - все компьютеры подсети оасса С 192.168.3. Значение % определяет все компьютеры и дает возможность пользователю подключиться из любой точки. Пустое значение столбца Host аналогично значению (Исоючение: в таблице db пустое значение столбца Host указывает на необходимость проверки таблицы host для получения более детальной информации. Этот процесс подробно описывается далее в разделе Проверка запроса .) В версиях MySQL серии 3.23 можно также определить числа IP-адресов с помошью маски сети, отражающей разрядность сетевого номера. Строка 192.168.128.0/17, например, определяет 17-разрядный сетевой номер. Ей соответствует любой компьютер, первые 17 разрядов IP-адреса которого аналогичны разрядам адреса 192 .168 .128. User. Имена пользователей могут задаваться буквенными или пустыми значениями. В последнем случае сможет подключиться любой пользователь. Значение % и пустое значение в столбце User - это не одно и то же. Оно соответствует пользователю с именем % . Надо признать, такое имя встречается довольно редко. Если при проверке входящего соединения пользователю соответствует в таблице User запись с пустым значением столбца User, данный клиент рассматривается как анонимный. Password. Значения этого столбца могут быть либо пустыми, либо буквенными. Специальные символы в них использовать нельзя. Пустое значение не является аналогией любого пароля . Когда в таблице определено пустое значение столбца Password, пользователь не должен определять пароль вовсе. Значения паролей хранятся в зашифрованном, а не в обычном текстовом виде. Пользователи не смогут подключиться к серверу, если в столбец Password записываются обычные текстовые значения! Оператор GRANT и команда mysqladmin password автоматически шифруют пароль. Поэтому при непосредственной записи паролей с помощью команд INSERT, REPLACE, UPDATE И SET PASSWORD следует зашифровать их значения с помошью команды PASSWORD( new password ) . Db. Значения столбца Db в таблицах columns priv и tables priv обязательно должны представлять собой текстовые имена баз данных. Использование специальных символов и пустых значений запрещается. В таблицах db и host эти значения можно определить как в виде текстовых значений, так и с помощью SQL-символов % и . Пустое значение и значение % позволяют получить доступ к любой базе данных. Table name, Column name. Значения этих столбцов представляют собой текстовые записи имен таблиц и столбцов. Использование специальных символов и пустых значений запрещается. Регистр символов в некоторых столбцах области ифает важное значение, а в остальных столбцах значения могут быть записаны как строчными, так и прописными буквами. Регистры символов в таких столбцах воспринимаются сервером по-разному. Это показано в табл. 12.3. Необходимо заметить, что регистр значений столбца Tablename всегда имеет значение, хотя учет регистра в именах таблиц в запросах зависит от файловой системы, под управлением которой работает сервер (под управлением UNIX выбор регистра важен, а под управлением Windows - нет).
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |