Таблицы db и host используются совместно и управляют доступом к таблицам. Взгляните на поля таблицы db.
Листинг 14.9.
CREATE TABLE "db" (
"Host" char(60) binary NOT NULL default '', "Db" char(64) binary NOT NULL default '', "User" char(16) binary NOT NULL default '', "Select_priv" enum ('N', 'Y') NOT NULL default 'N', "Insert_priv" enum ('N', 'Y') NOT NULL default 'N', "Update_priv" enum ('N', 'Y') NOT NULL default 'N', "Delete_priv" enum ('N', 'Y') NOT NULL default 'N', "Create_priv" enum ('N', 'Y') NOT NULL default 'N', "Drop_priv" enum ('N', 'Y') NOT NULL default 'N', "Grant_priv" enum ('N', 'Y') NOT NULL default 'N', "References_priv" enum ('N', 'Y') NOT NULL default 'N', "Index_priv" enum ('N', 'Y') NOT NULL default 'N', "Alter_priv" enum ('N', 'Y') NOT NULL default 'N', "Create_tmp_table_priv" enum ('N', 'Y') NOT NULL default 'N', "Lock_tables_priv" enum ('N', 'Y') NOT NULL default 'N', PRIMARY KEY ("Host", "Db", "User") )TYPE=MyISAM COMMENT='Database privileges'
Первые три поля опять являются полями диапазона, которые подключают определенных пользователей и узлы к базам данных. Оставшиеся поля привилегий используются для определения типа операции, которую пользователь может произвести в данной базе данных (см. табл. 14.1 для получения более детальной информации относительно полей).
Приведенная ниже запись свидетельствует о том, что пользователь bill, подключаясь с узла cranberry.domain.com, может работать только с базой данных darkbeast.
Как видим, в поле Host таблицы db указано значение %, свидетельствующее о том, что перечень узлов, с которых можно получить доступ, определяется в третьей таблице - host. Ниже представлена структура этой таблицы.
Листинг 14.12.
CREATE TABLE "host" (
"Host" char(60) binary NOT NULL default '', "Db" char(64) binary NOT NULL default '', "Select_priv" enum ('N', 'Y') NOT NULL default 'N', "Insert_priv" enum ('N', 'Y') NOT NULL default 'N', "Update_priv" enum ('N', 'Y') NOT NULL default 'N', "Delete_priv" enum ('N', 'Y') NOT NULL default 'N', "Create_priv" enum ('N', 'Y') NOT NULL default 'N', "Drop_priv" enum ('N', 'Y') NOT NULL default 'N', "Grant_priv" enum ('N', 'Y') NOT NULL default 'N', "References_priv" enum ('N', 'Y') NOT NULL default 'N', "Index_priv" enum ('N', 'Y') NOT NULL default 'N', "Alter_priv" enum ('N', 'Y') NOT NULL default 'N', "Create_tmp_table_priv" enum ('N', 'Y') NOT NULL default 'N', "Lock_tables_priv" enum ('N', 'Y') NOT NULL default 'N', PRIMARY KEY ("Host", "Db") ) TYPE=MyISAM COMMENT='Host privileges; Merged with database privileges'
Данное разделение между записями об узле и записями о базе данных, в действительности намного полезнее, чем кажется на первый взгляд. При отсутствии таблицы host и необходимости предоставить пользователю определенные права, вам потребуется создать отдельную запись для каждого узла в таблице db и соответственно обозначить их привилегии. Но поскольку таблица host присутствует, можно поместить в таблицу имена различных узлов, но с простым доступом (с помощью пустого поля Host) в таблице db, после чего назначить привилегии для каждого узла отдельно. Когда один из перечисленных узлов попытается получить доступ, MySQL предоставит привилегии исходя из того, что было прописано в таблице host.
Ниже приведен соответствующий пример (первый фрагмент взят из таблицы db, второй - это соответствующая запись в таблице host).
В данном случае пользователь jim сможет получить доступ к серверу MySQL с любого из этих узлов, но, как видно из таблицы, предоставляемые ему привилегии определяются именно узлом, с которого он производит подключение.
Таблицы tablespriv и columns_priv
В последних версиях MySQL к вышеуказанным трем таблицам добавлены еще две - это таблицы tables_priv и columns_priv. Это дает возможность администратору
ужесточить контроль доступа к определенным таблицам в базе данных и, более того, к определенным столбцам таблиц.
Ниже представлена структура таблицы tables_priv.
Листинг 14.14.
CREATE TABLE "tables_priv" (
"Host" char(60) binary NOT NULL default '', "Db" char(64) binary NOT NULL default '', "User" char(16) binary NOT NULL default '', "Table_name" char(64) binary NOT NULL default '', "Grantor" char(77) binary NOT NULL default '', "Timestamp" timestamp(14) NOT NULL,
"Table_priv" set("Select", "Insert", "Update", "Delete", "Create", "Drop ", "Grant", "References", "Index", "Alter_priv") NOT NULL default '',
"Column_priv" set("Select", "Insert", "Update", "References") NOT NULL default '',
PRIMARY KEY ("Host", "Db", "User", "Table_name")
KEY "Grantor" ("Grantor") ) TYPE=MyISAM COMMENT='Table privileges'
Следующая запись ограничит выполнение операции SELECT для пользователя john таблицей cream, а все попытки обратиться с запросом SELECT к другим таблицам завершатся ошибкой.
Для более строгого контроля на низком уровне, MySQL предлагает таблицы col-umns_priv, которые дают возможность установить привилегии доступа к отдельным столбцам в таблице. Ниже представлена ее структура.
Листинг 14.17.
CREATE TABLE "columns_priv" (
"Host" char(60) binary NOT NULL default '', "Db" char(64) binary NOT NULL default '', "User" char(16) binary NOT NULL default '', "Table_name" char(64) binary NOT NULL default '', "Column_name" char(64) binary NOT NULL default '', "Timestamp" timestamp(14) NOT NULL,
"Column_priv" set("Select", "Insert", "Update", "References") NOT NULL default '',
PRIMARY KEY ("Host", "Db", "User", "Table_name", "Column_name") ) TYPE=MyISAM COMMENT='Column privileges'
Нижеприведенные правила говорят о том, что пользователи, зарегистрированные в системе как hr_users, могут просматривать только идентификатор служащего (поле id), имя служащего (поле name) и отдел (поле dept) в таблице db1.employees. В то время как специалисты из отдела кадров (которые зарегистрированы в системе как пользователи hr_supervisors), могут просматривать информацию о служащих и обновлять ее (имя и отдел).
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Таблицы Db и Host
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Безопасность, управление доступом и привилегии | Все о MySQL. Взаимодействие между таблицами разрешений |