Программирование >>  Программный интерфейс приложений 

1 ... 165 166 167 [ 168 ] 169 170 171 ... 264


тера. Уровень этого контроля более высокий, чем при использовании одной лишь таблицы db. Операторы GRANT и REVOKE не могут изменять содержимое этой таблицы, поэтому на некоторых компьютерах она вообще не используется.

tables priv. Таблица tables priv определяет привилегии доступа к таблицам. Эти привилегии применимы ко всем столбцам определенной таблицы.

columns priv. Таблица columns priv определяет привилегии доступа к столбцам. Эти привилегии применимы к отдельным столбцам соответствующей таблицы.

В расположенном далее разделе Установка пользователей без помощи оператора GRANT рассказывается, как оператор GRANT изменяет информацию этих таблиц и как с помощью непосредственного редактирования аналогичных результатов может достичь администратор.

Таблицы tablespriv и columspriv впервые появились в MySQL версии 3.22.11 (вместе с оператором GRANT). Поэтому администраторы старых версий MySQL могут найти в базе данных mysql своего сервера только таблицы user, db и host. Если же эти таблицы не появляются даже после обновления до версии 3.22.11 или более поздней, запустите для их создания сценарий mysql f ix privileges tables.

Отсутствие таблицы rowpriv объясняется невозможностью предоставления в MySQL привилегий на уровне строк. Нельзя, например, предоставить пользователю доступ только к отдельным строкам таблицы. Обеспечить подобную возможность реально можно только посредством написания соответствующей программы. Для блокировки данных на уровне записей можно использовать функцию GETLOCK (}, описанную в приложении В, Операторы и функции .

Таблицы разрешений содержат столбцы двух видов: столбцы области, определяющие область применения записи, и столбцы привилегий, определяющие присваиваемые привилегии. (Некоторые таблицы разрешений включают и другого рода столбцы, однако здесь они не рассматриваются.)

Столбцы области применения таблицы разрешений

Столбцы области применения таблицы разрешений определяют, когда же применяются записи таблиц. Каждый элемент таблицы разрешений включает значения столбцов User и Host. Эти значения определяют, что данный элемент применяется при подключении определенного пользователя (User) к определенному компьютеру (Host). (Таблица Host является исключением в этом отношении. Она используется особым способом, который в данном разделе не рассматривается.) Кроме того, другие таблицы могут содержать дополнительные столбцы. Таблица db, например, включает также столбец Db, определяющий базу данных, к которой применяется запись. Аналогичным об-



разом таблицы tables priv и columns priv содержат поля области, которые ограничивают область применения записи до отдельной таблицы базы данных или отдельного столбца таблицы.

Столбцы привилегий таблицы разрешений

Таблицы разрешений включают также столбцы привилегий. Именно они определяют, какие привилегии предоставляются описанному в столбцах области пользователю. Поддерживаемые сервером MySQL привилегии приведены в списке, представленном ниже. В этом списке указываются названия привилегий, используемые в строке оператора GRANT. В большинстве случаев названия столбцов привилегий таблиц user, db и host сходны (по очевидным причинам) с названиями привилегий, приведенными в главе И, Обшее администрирование MySQL , в разделе, посвяшенном описанию оператора GRANT. Столбец Select priv, например, соответствует привилегии SELECT.

Привилегии баз данных и таблиц

Для работы с базами данных и таблицами применяются следуюшие привилегии.

ALTER. Позволяет использовать оператор alter table. Вообше ALTER - это привилегия первого уровня. Для обработки таблиц необходимо предоставить дополнительные привилегии в зависимости от того, какие операции необходимо выполнять.

CREATE. Позволяет создавать базы данных и таблицы, но не индексы.

DELETE. Позволяет удалять записи из таблиц.

drop. Позволяет удалять таблицы и базы данных, но не индексы.

INDEX. Позволяет создавать и удалять индексы в таблице.

INSERT. Позволяет вставлять новые записи в таблицы.

REFERENCES. В настояшее время не используется.

SELECT. Позволяет извлекать данные из таблиц с помошью операторов SELECT. Эту привилегию необязательно присваивать для исполнения операторов SELECT, не связанных с таблицами, например, SELECT NOWO ИЛИ SELECT 4/2.

UPDATE. Позволяет изменять записи таблицы.

Административные привилегии

Следующие привилегии позволяют выполнять административные операции, управляющие функционированием сервера или дающие возможность присваивать привилегии другим пользователям.



file. Позволяет давать серверу задание на считывание или запись файлов. Эту привилегаю рекомендуется присваивать лишь в особых случаях. Будьте внимательны (см. раздел Как минимизировать риск при работе с таблицами разрешений ). Поэтому сервер также предпринимает определенные меры предосторожности, позволяющие установить границы применения этой привилегии. Так, пользователи могут считывать файлы, которые доступны для чтения во всей системе. Невозможно записать файл, который уже сушествует на диске. Это позволяет избегать путаницы с критически важными файлами сервера, например /etc/passwd, или файлами чужих баз данных. Отсутствие подобного ограничения может привести к полной замене содержимого таблиц разрешений базы данных mysql.

Присваивая привилегию file, следует обязательно убедиться, что запущенный сервер не обладает правами UNIX-пользователя root, который может создавать новые файлы в любом каталоге файловой системы. При запуске сервера под управлением учетной записи пользователя без особых привилегий создавать файлы можно будет только в доступных для такого пользователя каталогах.

grant. Позволяет предоставить другому пользователю привилегии, имеющиеся у администратора, включая саму возможность присвоения привилегий.

process. Позволяет просматривать информацию о выполняемых внутри сервера нитях (процессах) с помощью оператора show processlist или команды mysqladmin processlist. Эта же привилегия позволяет завершить выполнение процесса с помошью оператора kill или команды mysqladmin kill.

Наличие этой привилегии позволяет пользователям просматривать и завершать выполнение любых процессов, включая свои собственные. Ч

reload. Позволяет выполнять множество операций администрирования сервера, например запускать SQL-оператор flush или выполнять такие mysqladmin-команды, как reload, refresh, flush-hosts, flush-logs, flush-privileges и flush-tables.

Даже несмотря на административные функции, эта привилегия не является опасной.

shutdown. Позволяет завершать работу сервера с помощью команды mysqladmin shutdown.

В таблицах user, db и host каждая привилегия определена в отдельном столбце. Все эти столбцы описаны типом enum( n , y ) и по умолчанию каждая привилегия имеет значение n (отключена). Привилегии таблиц tables priv и column priv представлены с помощью типа set, благодаря чему привилегии могут определяться различными ком-



1 ... 165 166 167 [ 168 ] 169 170 171 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика