Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Администрирование MySQL.doc
Скачиваний:
2
Добавлен:
18.04.2019
Размер:
1.3 Mб
Скачать

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

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

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

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

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

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

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

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

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

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

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

  • SELECT. Позволяет извлекать данные из таблиц с помощью операторов select. Эту привилегию необязательно присваивать для исполнения операторов select, не связанных с таблицами, например, SELECT NOW() ИЛИ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 каждая привилегия определена в отдельном столбце. Все эти столбцы описаны типомENUMC"N", "Y", и по умолчанию каждая привилегия имеет значение "n" (отключена). Привилегии таблицtables_priv и column_priv представлены с помощью типа set, благодаря чему привилегии могут определяться различными комбинациями в одном столбце. Более эффективное представление привилегий в последних двух таблицах объясняется тем, что они появились гогораздо позже, чем первые три. (Вполне возможно, что в будущем таблицы 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. Эти привилегии применяются к выполняемым сервером операциям, не связанным с отдельной базой данных или таблицей. Ведь при необходимости завершения работы сервера вовсе не обязательно проверять, над какой базой данных в настоящее время ведется работа.