ТОП-10 популярных


НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...


Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

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

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...

Internet2, или cтарые песни о новом
Когда-то на заре Интернета, тогдаеще военно-научной сетиAPRAnet, были заложены основныепринципы функционирования«Сети сетей». В их числе — использованиепротокола, называемого сейчасIPv4. В...

Все о MySQL. Таблицы Db и Host


28-12-2009

Таблицы 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.
Таблицы Db и Host
 Как видим, в поле 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).
Таблицы 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 к другим таблицам за­вершатся ошибкой.
Таблицы Db и Host
Для более строгого контроля на низком уровне, 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), могут просматривать информацию о служащих и обновлять ее (имя и отдел).
Таблицы Db и Host

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
Все о MySQL. Безопасность, управление доступом и привилегии Все о MySQL. Взаимодействие между таблицами разрешений