Spec-Zone .ru
спецификации, руководства, описания, API
|
MySQL обеспечивает полномочия, которые применяются в различных контекстах и на разных уровнях работы:
Административные привилегии позволяют пользователям управлять работой сервера MySQL. Эти полномочия являются глобальной переменной, потому что они не являются определенными для определенной базы данных.
Полномочия базы данных применяются к базе данных и ко всем объектам в пределах этого. Эти полномочия можно предоставить для определенных баз данных, или глобально так, чтобы они применились ко всем базам данных.
Полномочия для объектов базы данных, таких как таблицы, индексирует, представления, и сохраненные подпрограммы можно предоставить для конкретных целей в пределах базы данных для всех объектов данного типа в пределах базы данных (например, все таблицы в базе данных), или глобально для всех объектов данного вводят все базы данных).
Информация о полномочиях учетной записи хранится в user
, db
, tables_priv
, columns_priv
, и procs_priv
таблицы в mysql
база данных (см. Раздел 6.2.2,
"Полномочие Систем Грант Тэбльз"). Сервер MySQL читает содержание этих таблиц в память, когда это
запускает и перезагружает их при этих обстоятельствах обозначенный в Разделе
6.2.6, "Когда Изменения Полномочия Вступают в силу". Решения контроля доступа основаны на
копиях в памяти таблиц предоставления.
Некоторые выпуски MySQL представляют изменения структуре таблиц предоставления, чтобы добавить новые права доступа или функции. Всякий раз, когда Вы обновляете к новой версии MySQL, следует обновить свои таблицы предоставления, чтобы удостовериться, что у них есть текущая структура так, чтобы можно было использовать в своих интересах любые новые возможности. См. Раздел 4.4.7, "mysql_upgrade — Таблицы MySQL Check и Upgrade" .
Следующая таблица показывает имена полномочия, используемые на уровне SQL в GRANT
и REVOKE
операторы, наряду с именем столбца, связанным с каждым полномочием в
таблицах предоставления и контекстом, в котором применяется полномочие.
Таблица 6.2. Допустимые Полномочия для GRANT
иREVOKE
Полномочие | Столбец | Контекст |
---|---|---|
CREATE
|
Create_priv |
базы данных, таблицы, или индексирует |
DROP
|
Drop_priv |
базы данных, таблицы, или представления |
GRANT
OPTION |
Grant_priv |
базы данных, таблицы, или сохраненные подпрограммы |
LOCK
TABLES |
Lock_tables_priv |
базы данных |
REFERENCES
|
References_priv |
базы данных или таблицы |
EVENT |
Event_priv |
базы данных |
ALTER |
Alter_priv |
таблицы |
DELETE
|
Delete_priv |
таблицы |
INDEX |
Index_priv |
таблицы |
INSERT
|
Insert_priv |
таблицы или столбцы |
SELECT
|
Select_priv |
таблицы или столбцы |
UPDATE
|
Update_priv |
таблицы или столбцы |
CREATE TEMPORARY TABLES |
Create_tmp_table_priv |
таблицы |
TRIGGER |
Trigger_priv |
таблицы |
CREATE
VIEW |
Create_view_priv |
представления |
SHOW
VIEW |
Show_view_priv |
представления |
ALTER
ROUTINE |
Alter_routine_priv |
сохраненные подпрограммы |
CREATE
ROUTINE |
Create_routine_priv |
сохраненные подпрограммы |
EXECUTE |
Execute_priv |
сохраненные подпрограммы |
FILE
|
File_priv |
доступ к файлу на узле сервера |
CREATE
TABLESPACE |
Create_tablespace_priv |
администрирование сервера |
CREATE
USER |
Create_user_priv |
администрирование сервера |
PROCESS |
Process_priv |
администрирование сервера |
PROXY |
см. proxies_priv таблица |
администрирование сервера |
RELOAD
|
Reload_priv |
администрирование сервера |
REPLICATION
CLIENT |
Repl_client_priv |
администрирование сервера |
REPLICATION
SLAVE |
Repl_slave_priv |
администрирование сервера |
SHOW
DATABASES |
Show_db_priv |
администрирование сервера |
SHUTDOWN |
Shutdown_priv |
администрирование сервера |
SUPER |
Super_priv |
администрирование сервера |
ALL
[PRIVILEGES] |
администрирование сервера | |
USAGE |
администрирование сервера |
Следующий список обеспечивает общее описание каждого полномочия, доступного в MySQL. У определенных SQL-операторов могли бы быть более определенные требования полномочия чем обозначенный здесь. Если так, описание для рассматриваемого оператора обеспечивает детали.
ALL
или ALL PRIVILEGES
спецификатор полномочия является сокращением. Это
обозначает "все полномочия, доступные на данном уровне полномочий"
(кроме GRANT OPTION
).
Например, предоставление ALL
в глобальной переменной или таблице уровень предоставляет все глобальные полномочия или все полномочия
на уровне таблицы.
ALTER
полномочие включает использованию ALTER TABLE
изменить структуру таблиц. ALTER TABLE
также требует CREATE
и INSERT
полномочия. Переименование таблицы требует ALTER
и DROP
на старой таблице, ALTER
, CREATE
, и INSERT
на новой таблице.
ALTER ROUTINE
полномочие необходимо, чтобы изменить или отбросить
сохраненные подпрограммы (процедуры и функции).
CREATE
полномочие включает созданию новых баз данных и таблиц.
CREATE ROUTINE
полномочие необходимо, чтобы создать сохраненные
подпрограммы (процедуры и функции).
CREATE TABLESPACE
полномочие необходимо, чтобы создать, изменить, или
отбросить группы файла журнала и табличные области.
CREATE TEMPORARY TABLES
полномочие включает созданию временных таблиц,
используя CREATE TEMPORARY TABLE
оператор.
После того, как сеанс создал временную таблицу, сервер не выполняет дальнейшего полномочия,
проверяет таблицу. Сеанс создания может выполнить любую работу на таблице, такой как DROP TABLE
, INSERT
, UPDATE
,
или SELECT
.
Одна импликация этого поведения - то, что сеанс может управлять своими временными таблицами, даже
если у текущего пользователя нет никакого полномочия создать их. Предположите, что текущий
пользователь не имеет CREATE TEMPORARY TABLES
полномочие, но в состоянии выполнить a
DEFINER
- хранимая процедура контекста, которая выполняется с
полномочиями пользователя, который действительно имеет CREATE TEMPORARY TABLES
и это создает временную таблицу. В то
время как процедура выполняется, сеанс использует полномочия пользователя определения. После
возвратов процедуры эффективные полномочия возвращаются к таковым из текущего пользователя, который
может все еще видеть временную таблицу и выполнить любую работу на этом.
Чтобы сохранить полномочия для временных и невременных таблиц отдельными, общее обходное решение для
этой ситуации должно создать базу данных, выделенную использованию временных таблиц. Затем для той
базы данных, пользователя можно предоставить CREATE TEMPORARY TABLES
полномочие, наряду с любыми другими
полномочиями, требуемыми для операций временной таблицы, сделанных тем пользователем.
CREATE USER
полномочие включает использованию CREATE USER
, DROP
USER
, RENAME USER
, и
REVOKE
ALL PRIVILEGES
.
CREATE VIEW
полномочие включает использованию CREATE VIEW
.
DELETE
полномочие позволяет строкам быть удаленными из таблиц в базе
данных.
DROP
полномочие включает, Вы, чтобы отбросить (удаляете) существующие
базы данных, таблицы, и представления. DROP
полномочие требуется, чтобы использовать оператор ALTER TABLE ... DROP PARTITION
на разделенной таблице. DROP
полномочие также требуется для TRUNCATE TABLE
. Если Вы предоставляете DROP
полномочие для
mysql
база данных пользователю, тот пользователь может отбросить базу
данных, в которой сохранены права доступа MySQL.
EVENT
полномочие обязано создавать, изменять, отбрасывать, или видеть
события для Планировщика События.
EXECUTE
полномочие обязано выполнять сохраненные подпрограммы (процедуры
и функции).
FILE
полномочие дает Вам разрешение, чтобы считать и записать файлы на
узле сервера, используя LOAD DATA
INFILE
и SELECT ...
INTO OUTFILE
операторы и LOAD_FILE()
функция. Пользователь, который имеет FILE
полномочие может считать любой файл на узле сервера, который или
читаем миром или читаем сервером MySQL. (Это подразумевает, что пользователь может считать любой файл в
любом каталоге базы данных, потому что сервер может получить доступ к любому из тех файлов.) FILE
полномочие
также позволяет пользователю создать новые файлы в любом каталоге, где у сервера MySQL есть доступ для
записи. Это включает каталог данных сервера, содержащий файлы, которые реализуют таблицы полномочия. Как
меры безопасности, сервер не будет перезаписывать существующие файлы.
Ограничить расположение, в котором файлы могут быть считаны и записаны, установлены secure_file_priv
система к определенному каталогу. См. Раздел 5.1.4, "Системные Переменные
Сервера".
GRANT OPTION
полномочие позволяет Вам дать другим пользователям или
удалить от других пользователей те полномочия, которыми сами Вы обладаете.
INDEX
полномочие включает, Вы, чтобы создать или отбросить (удаляете),
индексирует. INDEX
применяется к существующим таблицам. Если Вы имеете CREATE
полномочие для таблицы, можно включать, индексируют
определения в CREATE TABLE
оператор.
INSERT
полномочие позволяет строкам быть вставленными в таблицы в базе
данных. INSERT
также
требуется для ANALYZE TABLE
,
OPTIMIZE TABLE
, и REPAIR TABLE
операторы табличного обслуживания.
LOCK TABLES
полномочие включает использованию явных LOCK TABLES
операторы, чтобы заблокировать таблицы, для которых Вы имеете
SELECT
полномочие. Это
включает использование блокировок записи, которое препятствует тому, чтобы другие сеансы читали
заблокированную таблицу.
PROCESS
полномочие принадлежит дисплею информации о потоках,
выполняющихся в пределах сервера (то есть, информации об операторах, выполняемых сеансами). Полномочие
включает использованию SHOW
PROCESSLIST
или mysqladmin processlist, чтобы видеть, что потоки
принадлежат другим учетным записям; можно всегда видеть свои собственные потоки.
PROXY
полномочие позволяет пользователю явиться олицетворением или стать
известным как другой пользователь. См. Раздел 6.3.8, "Пользователи
Прокси".
REFERENCES
полномочие в настоящий момент неиспользовано.
RELOAD
полномочие включает использованию FLUSH
оператор. Это также включает mysqladmin командам, которые эквивалентны FLUSH
операции: flush-hosts
, flush-logs
, flush-privileges
, flush-status
, flush-tables
, flush-threads
, refresh
, и reload
.
reload
команда говорит серверу перезагружать таблицы предоставления в
память. flush-privileges
синоним для reload
. refresh
команда закрывает и
вновь открывает файлы журнала и сбрасывает все таблицы. Другой flush-
команды выполняют функции, подобные xxx
refresh
, но являются более определенными и может быть
предпочтительным в некоторых случаях. Например, если Вы хотите сбросить только файлы журнала, flush-logs
лучший выбор чем refresh
.
REPLICATION CLIENT
полномочие включает использованию SHOW MASTER STATUS
, SHOW SLAVE STATUS
, и SHOW BINARY LOGS
.
REPLICATION SLAVE
полномочие нужно предоставить учетным записям, которые
используются ведомыми серверами, чтобы соединиться с текущим сервером как их ведущее устройство. Без
этого полномочия ведомое устройство не может запросить обновления, которые были сделаны к базам данных
на главном сервере.
SELECT
полномочие позволяет Вам выбрать строки из таблиц в базе данных.
SELECT
операторы требуют SELECT
полномочие, только если они фактически получают строки от
таблицы. Некоторые SELECT
операторы не получают доступ к таблицам и могут быть выполнены
без разрешения для любой базы данных. Например, можно использовать SELECT
как простой калькулятор, чтобы оценить выражения, которые не
делают ссылки на таблицы:
SELECT 1+1;SELECT PI()*2;
SELECT
полномочие
также необходимо для других операторов, которые читают значения столбцов. Например, SELECT
необходим для столбцов, на которые ссылаются на правой
стороне col_name
=expr
присвоение в UPDATE
операторы или для столбцов, названных в WHERE
пункт DELETE
или UPDATE
операторы.
SHOW DATABASES
полномочие позволяет учетной записи видеть имена базы
данных, выходя SHOW DATABASE
оператор. Учетные записи, у которых нет этого
полномочия, видят только базы данных, для которых они имеют некоторые полномочия, и не могут
использовать оператор вообще, если сервер был запущен с --skip-show-database
опция. Отметьте, что любое
глобальное полномочие является полномочием для базы данных.
SHOW VIEW
полномочие включает использованию SHOW CREATE VIEW
.
SHUTDOWN
полномочие включает использованию mysqladmin команды завершения работы. Нет никакого соответствующего
SQL-оператора.
SUPER
полномочие позволяет учетной записи использовать CHANGE MASTER TO
, KILL
или mysqladmin уничтожают, чтобы уничтожить потоки,
принадлежащие другим учетным записям (можно всегда уничтожать свои собственные потоки), PURGE BINARY LOGS
, использование изменений конфигурации SET GLOBAL
чтобы изменить глобальные системные переменные, mysqladmin отлаживают команду, включая или отключая
журналирование, выполняя обновления даже если read_only
системная переменная включается, запускаясь и останавливая
репликацию на ведомых серверах, спецификации любой учетной записи в DEFINER
атрибут сохраненных программ и представлений, и позволяет Вам соединиться (однажды) даже если предел
соединения, которым управляют max_connections
системная переменная достигается.
Чтобы создать или изменить сохраненные функции, если двоичное журналирование включается, Вам,
возможно, также понадобится SUPER
полномочие, как описано в Разделе 18.7, "Двоичное
Журналирование Сохраненных Программ".
TRIGGER
полномочие включает триггерным операциям. У Вас должно быть это
полномочие для таблицы, чтобы создать, отбросить, или выполнить триггеры для той таблицы.
UPDATE
полномочие позволяет строкам быть обновленными в таблицах в базе
данных.
USAGE
спецификатор полномочия не обозначает "полномочия." Это используется на
глобальном уровне с GRANT
изменить атрибуты учетной записи, такие как пределы ресурса или
характеристики SSL, не влияя на существующие полномочия учетной записи.
Это - хорошая идея предоставить учетной записи только те полномочия, в которых это нуждается. Следует
осуществить определенное предостережение в предоставлении FILE
и административные привилегии:
FILE
полномочием можно злоупотребить, чтобы считать в таблицу базы данных любые файлы, которые сервер MySQL
может считать на узле сервера. Это включает все читаемые миром файлы и файлы в каталоге данных сервера.
К таблице можно тогда получить доступ, используя SELECT
передать его содержание хосту клиента.
GRANT
OPTION
полномочие позволяет пользователям дать свои полномочия другим пользователям. Два
пользователя, у которых есть различные полномочия и с GRANT OPTION
полномочие в состоянии объединить полномочия.
ALTER
полномочие может использоваться, чтобы ниспровергать систему
полномочия, переименовывая таблицы.
SHUTDOWN
полномочием можно злоупотребить, чтобы отказать в службе другим
пользователям полностью, завершая сервер.
PROCESS
полномочие может использоваться, чтобы просмотреть простой текст
в настоящий момент выполняющихся операторов, включая операторы, которые устанавливают или изменяют
пароли.
SUPER
полномочие может использоваться, чтобы завершить другие сеансы или
измениться, как сервер работает.
Полномочия, предоставленные для mysql
сама база данных
может использоваться, чтобы изменить пароли и другую информацию о праве доступа. Пароли сохранены
зашифрованные, таким образом, злонамеренный пользователь не может просто считать их, чтобы знать
незашифрованный пароль. Однако, пользователь с доступом для записи к user
таблица Password
столбец может изменить пароль учетной записи, и затем
соединиться с сервером MySQL, используя ту учетную запись.