Spec-Zone .ru
спецификации, руководства, описания, API
|
GRANTpriv_type
[(column_list
)] [,priv_type
[(column_list
)]] ... ON [object_type
]priv_level
TOuser_specification
[,user_specification
] ... [REQUIRE {NONE |ssl_option
[[AND]ssl_option
] ...}] [WITHwith_option
...]GRANT PROXY ONuser_specification
TOuser_specification
[,user_specification
] ... [WITH GRANT OPTION]object_type
: TABLE | FUNCTION | PROCEDUREpriv_level
: * | *.* |db_name
.* |db_name.tbl_name
|tbl_name
|db_name
.routine_name
user_specification
:user
[ IDENTIFIED BY [PASSWORD] 'password
' | IDENTIFIED WITHauth_plugin
[AS 'auth_string
'] ]ssl_option
: SSL | X509 | CIPHER 'cipher
' | ISSUER 'issuer
' | SUBJECT 'subject
'with_option
: GRANT OPTION | MAX_QUERIES_PER_HOURcount
| MAX_UPDATES_PER_HOURcount
| MAX_CONNECTIONS_PER_HOURcount
| MAX_USER_CONNECTIONScount
GRANT
оператор предоставляет полномочия учетным записям пользователей MySQL. GRANT
также подачи, чтобы определить другие характеристики учетной записи, такие как использование безопасных
соединений и пределов на доступе к ресурсам сервера. Использовать GRANT
, Вы должны иметь GRANT OPTION
полномочие, и у Вас должны быть полномочия, которые Вы
предоставляете.
Обычно, администратор базы данных сначала использует CREATE USER
создать учетную запись, тогда GRANT
определить его полномочия и характеристики. Например:
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';GRANT ALL ON db1.* TO 'jeffrey'@'localhost';GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';GRANT USAGE ON *.* TO 'jeffrey'@'localhost' WITH MAX_QUERIES_PER_HOUR 90;
Однако, если учетную запись называют в a GRANT
оператор уже не существует, GRANT
может создать это при условиях, описанных позже в обсуждении NO_AUTO_CREATE_USER
Режим SQL.
REVOKE
оператор связывается с GRANT
и позволяет администраторам удалить полномочия учетной записи. См. Раздел 13.7.1.6,"REVOKE
Синтаксис".
Когда успешно выполняющийся из mysql программы, GRANT
отвечает Query OK, 0 rows affected
. Чтобы
определить, что дает следствию полномочия работы, использовать SHOW GRANTS
. См. Раздел 13.7.5.22,"SHOW GRANTS
Синтаксис".
Есть несколько аспектов к GRANT
оператор, описанный под следующими темами в этом
разделе:
Некоторые выпуски MySQL представляют изменения структуре таблиц предоставления, чтобы добавить новые полномочия или функции. Всякий раз, когда Вы обновляете к новой версии MySQL, следует обновить свои таблицы предоставления, чтобы удостовериться, что у них есть текущая структура так, чтобы можно было использовать в своих интересах любые новые возможности. См. Раздел 4.4.7, "mysql_upgrade — Таблицы MySQL Check и Upgrade" .
Следующая таблица суммирует допустимое priv_type
типы полномочия,
которые могут быть определены для GRANT
и REVOKE
операторы. Для дополнительной информации об этих полномочиях см. Раздел
6.2.1, "Полномочия, Обеспеченные MySQL".
Таблица 13.1. Допустимые Полномочия для GRANT
иREVOKE
Полномочие | Значение |
---|---|
ALL
[PRIVILEGES] |
Предоставьте все полномочия на указанном уровне доступа кроме GRANT OPTION |
ALTER |
Включите использованию ALTER
TABLE |
ALTER
ROUTINE |
Позвольте сохраненным подпрограммам быть измененными или отброшенными |
CREATE
|
Включите табличное создание и база данных |
CREATE
ROUTINE |
Включите сохраненному стандартному созданию |
CREATE
TABLESPACE |
Позвольте табличным областям и группам файла журнала быть созданными, измененным, или отброшенным |
CREATE TEMPORARY TABLES |
Включите использованию CREATE
TEMPORARY TABLE |
CREATE
USER |
Включите использованию CREATE
USER , DROP
USER , RENAME
USER , и REVOKE ALL
PRIVILEGES |
CREATE
VIEW |
Позвольте представлениям быть созданными или измененными |
DELETE
|
Включите использованию DELETE
|
DROP
|
Позвольте базам данных, таблицам, и представлениям быть отброшенными |
EVENT |
Включите использованию событий для Планировщика События |
EXECUTE |
Позвольте пользователю выполнить сохраненные подпрограммы |
FILE
|
Позвольте пользователю заставить сервер читать или писать файлы |
GRANT
OPTION |
Позвольте полномочиям быть предоставленными или удаленными из других учетных записей |
INDEX |
Включите индексирует, чтобы быть созданным или отброшенным |
INSERT
|
Включите использованию INSERT
|
LOCK
TABLES |
Включите использованию LOCK TABLES на таблицах, для которых Вы имеете SELECT полномочие
|
PROCESS |
Позвольте пользователю видеть все процессы с SHOW PROCESSLIST |
PROXY |
Включите пользователю, проксирующему |
REFERENCES
|
Не реализованный |
RELOAD
|
Включите использованию FLUSH
операции
|
REPLICATION
CLIENT |
Позвольте пользователю спросить, где основные или ведомые серверы |
REPLICATION
SLAVE |
Позвольте ведомым устройствам репликации считать двоичные события журнала от ведущего устройства |
SELECT
|
Включите использованию SELECT
|
SHOW
DATABASES |
Включить SHOW DATABASES
показать все базы данных
|
SHOW
VIEW |
Включите использованию SHOW
CREATE VIEW |
SHUTDOWN |
Включите использованию mysqladmin завершения работы |
SUPER |
Включите использованию других административных деятельностей такой как CHANGE MASTER TO , KILL , PURGE BINARY LOGS , SET GLOBAL , и команда mysqladmindebug |
TRIGGER |
Включите триггерным операциям |
UPDATE
|
Включите использованию UPDATE
|
USAGE |
Синоним для "никаких полномочий" |
Триггер связывается с таблицей, так создать или отбросить триггер, Вы должны иметь TRIGGER
полномочие для таблицы, не триггер.
В GRANT
операторы, ALL [PRIVILEGES]
или
PROXY
полномочие нужно назвать
отдельно и не может быть определено наряду с другими полномочиями. ALL [PRIVILEGES]
стенды для всех полномочий, доступных для уровня, на котором
полномочия состоят в том, чтобы быть предоставлены за исключением GRANT OPTION
и PROXY
полномочия.
USAGE
может быть определен,
чтобы создать пользователя, у которого нет никаких полномочий, или определить REQUIRE
или WITH
пункты для учетной записи, не
изменяя ее существующие полномочия.
Информация учетной записи MySQL хранится в таблицах mysql
база данных. Эта база
данных и система управления доступом обсуждаются экстенсивно в Разделе
6.2, "MySQL Access Privilege System", с которым следует консультироваться для дополнительных
деталей.
Если таблицы предоставления содержат строки полномочия, которые содержат имена базы данных смешанного случая или
имена таблиц и lower_case_table_names
системная переменная устанавливается в ненулевое
значение, REVOKE
не может использоваться, чтобы отменить эти полномочия. Будет необходимо управлять таблицами предоставления
непосредственно. (GRANT
не будет создавать такие строки когда lower_case_table_names
устанавливается, но такие строки, возможно, были
созданы до установки той переменной.)
Полномочия можно предоставить на нескольких уровнях, в зависимости от синтаксиса, используемого для ON
пункт. Для REVOKE
,
то же самое ON
синтаксис определяет который полномочия убрать. Примеры, показанные
здесь, включают нет IDENTIFIED BY '
пункт для краткости, но следует включать тот,
если учетная запись уже не существует, чтобы избежать создавать небезопасную учетную запись, у которой нет
никакого пароля.password
'
Глобальные полномочия являются административными или применяются ко всем базам данных на данном сервере. Чтобы
присвоить глобальные полномочия, использовать ON *.*
синтаксис:
GRANT ALL ON *.* TO 'someuser'@'somehost';GRANT SELECT, INSERT ON *.* TO 'someuser'@'somehost';
CREATE TABLESPACE
,
CREATE USER
, FILE
, PROCESS
, RELOAD
, REPLICATION CLIENT
, REPLICATION SLAVE
, SHOW DATABASES
, SHUTDOWN
, и SUPER
полномочия являются административными и могут только быть предоставлены
глобально.
Другие полномочия можно предоставить глобально или на более определенных уровнях.
MySQL хранит глобальные полномочия в mysql.user
таблица.
Полномочия базы данных применяются ко всем объектам в данной базе данных. Чтобы присвоить полномочия на уровне
базы данных, использовать ON
синтаксис: db_name
.*
GRANT ALL ON mydb.* TO 'someuser'@'somehost';GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'somehost';
Если Вы используете ON *
синтаксис (а не ON *.*
) и Вы
выбрали базу данных значения по умолчанию, полномочия присваиваются на уровне базы данных для базы данных
значения по умолчанию. Ошибка происходит, если нет никакой базы данных значения по умолчанию.
CREATE
, DROP
, EVENT
, GRANT OPTION
, и LOCK TABLES
полномочия могут быть определены на уровне базы данных. Таблица или
стандартные полномочия также могут быть определены на уровне базы данных, когда они применяются ко всем таблицам
или подпрограммам в базе данных.
MySQL хранит полномочия базы данных в mysql.db
таблица.
Табличные полномочия применяются ко всем столбцам в данной таблице. Чтобы присвоить полномочия на уровне
таблицы, использовать ON
синтаксис: db_name.tbl_name
GRANT ALL ON mydb.mytbl TO 'someuser'@'somehost';GRANT SELECT, INSERT ON mydb.mytbl TO 'someuser'@'somehost';
Если Вы определяете tbl_name
вместо db_name.tbl_name
,
оператор применяется к tbl_name
в базе данных значения по умолчанию.
Ошибка происходит, если нет никакой базы данных значения по умолчанию.
Допустимое priv_type
значения на табличном уровне ALTER
, CREATE VIEW
, CREATE
, DELETE
,
DROP
, GRANT OPTION
, INDEX
, INSERT
, SELECT
, SHOW VIEW
, TRIGGER
, и UPDATE
.
MySQL хранит табличные полномочия в mysql.tables_priv
таблица.
Полномочия столбца применяются к единственным столбцам в данной таблице. Каждое полномочие, которое будет предоставлено на уровне столбца, должно сопровождаться столбцом или столбцами, включенными в пределах круглых скобок.
GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'someuser'@'somehost';
Допустимое priv_type
значения для столбца (то есть, когда Вы
используете a column_list
пункт), INSERT
, SELECT
, и UPDATE
.
MySQL хранит полномочия столбца в mysql.columns_priv
таблица.
ALTER ROUTINE
, CREATE ROUTINE
, EXECUTE
, и GRANT OPTION
полномочия применяются к сохраненным подпрограммам (процедуры и
функции). Их можно предоставить на уровнях базы данных и глобальной переменной. За исключением CREATE ROUTINE
, эти полномочия можно предоставить на стандартном уровне для
отдельных подпрограмм.
GRANT CREATE ROUTINE ON mydb.* TO 'someuser'@'somehost';GRANT EXECUTE ON PROCEDURE mydb.myproc TO 'someuser'@'somehost';
Допустимое priv_type
значения на стандартном уровне ALTER ROUTINE
, EXECUTE
, и GRANT OPTION
. CREATE ROUTINE
не полномочие на стандартном уровне, потому что у Вас должно быть
это полномочие создать подпрограмму во-первых.
MySQL хранит полномочия на стандартном уровне в mysql.procs_priv
таблица.
PROXY
полномочие позволяет
одному пользователю быть прокси для другого. Пользователь прокси является олицетворением или берет
идентификационные данные проксированного пользователя.
GRANT PROXY ON 'localuser'@'localhost' TO 'externaluser'@'somehost';
Когда PROXY
предоставляется,
это должно быть единственное полномочие, названное в GRANT
оператор, REQUIRE
пункт не может быть дан, и разрешенное единственное WITH
опция WITH GRANT OPTION
.
Проксирование требует, чтобы пользователь прокси аутентифицировал через плагин, который возвращает имя
проксированного пользователя к серверу, когда пользователь прокси соединяется, и что пользователь прокси имеет
PROXY
полномочие для проксированного пользователя. Для получения дополнительной
информации и примеры, см. Раздел
6.3.8, "Пользователи Прокси".
MySQL хранит полномочия прокси в mysql.proxies_priv
таблица.
Для глобальной переменной, базы данных, таблицы, и стандартных уровней, GRANT ALL
присваивает только полномочия, которые существуют на уровне, который Вы
предоставляете. Например, GRANT ALL ON
оператор на уровне базы данных, таким образом, он не предоставляет полномочий только для глобальной переменной
такой как db_name
.*FILE
. Предоставление
ALL
не присваивается PROXY
полномочие.
object_type
пункт, если есть должен быть определен как TABLE
, FUNCTION
, или PROCEDURE
когда следующий объект является таблицей, сохраненной функцией, или
хранимой процедурой.
Полномочия для базы данных, таблицы, столбца, или подпрограммы формируются аддитивным образом как логическое OR
из полномочий на каждом
из уровней полномочий. Например, если у пользователя есть глобальная переменная SELECT
полномочие, полномочие не может отрицаться отсутствием полномочия в
базе данных, таблице, или уровне столбца. Детали проверяющей полномочие процедуры представляются в Разделе 6.2.5, "Управление доступом,
Этап 2: Проверка Запроса".
MySQL позволяет Вам предоставить полномочия на базах данных или таблицах, которые не существуют. Для таблиц
полномочия, которые будут предоставлены, должны включать CREATE
полномочие. Это поведение
проектом, и предназначается, чтобы позволить администратору базы данных подготовить учетные
записи пользователей и полномочия для баз данных или таблиц, которые должны быть составлены в более позднее
время.
MySQL автоматически не отменяет полномочий, когда Вы отбрасываете базу данных или таблицу. Однако, если Вы отбрасываете подпрограмму, любые полномочия на стандартном уровне, предоставленные для той подпрограммы, отменяются.
user
значение указывает на учетную запись MySQL который GRANT
оператор применяется. Чтобы разместить предоставление прав пользователям от
произвольных узлов, MySQL поддерживает определение user
значение в
форме
.
Если a user_name
@host_name
user_name
или host_name
значение является законным как неупомянутый
идентификатор, Вы не должны заключить его в кавычки. Однако, кавычки необходимы, чтобы определить a user_name
строка, содержащая специальные символы (такой как"-
"), или a host_name
строка, содержащая специальные символы или
подстановочные символы (такой как"%
"); например, 'test-user'@'%.com'
. Заключите в кавычки имя пользователя и имя хоста отдельно.
Можно определить подстановочные знаки в имени хоста. Например,
применяется к user_name
@'%.example.com'user_name
для любого узла в example.com
домен, и
применяется к user_name
@'192.168.1.%'user_name
для любого узла в 192.168.1
class C подсеть.
Простая форма user_name
синоним для
. user_name
@'%'
MySQL не поддерживает подстановочные знаки в именах пользователей. Чтобы
обратиться к анонимному пользователю, определите учетную запись с пустым именем пользователя с GRANT
оператор:
GRANT ALL ON test.* TO ''@'localhost' ...
В этом случае любому пользователю, который соединяется от локального узла с корректным паролем для анонимного пользователя, разрешат доступ с полномочиями, связанными с анонимной учетной записью пользователя.
Для дополнительной информации о значениях имени пользователя и имени хоста на имена учетной записи см. Раздел 6.2.3, "Определение Имен учетной записи".
Чтобы определить заключенные в кавычки значения, заключите в кавычки базу данных, таблицу, столбец, и стандартные имена как идентификаторы. Заключите в кавычки имена пользователей и имена хоста как идентификаторы или как строки. Пароли кавычки как строки. Для заключающих в кавычки строку и заключающих в кавычки идентификатор направляющих линий см. Раздел 9.1.1, "Строковые литералы", и Раздел 9.2, "Имена объектов Схемы".
"_
"и"%
"подстановочные знаки
разрешаются, определяя имена базы данных в GRANT
операторы, которые предоставляют полномочия на уровнях базы данных или глобальной переменной. Это означает,
например, это, если Вы хотите использовать"_
"символ как часть имени базы данных, следует определить это
как"\_
"в GRANT
оператор, чтобы предотвратить пользователя от возможности до доступа
дополнительные базы данных, соответствующие подстановочный образец; например, GRANT ... ON
`foo\_bar`.* TO ...
.
Если Вы разрешаете анонимным пользователям соединяться с сервером MySQL, следует также предоставить
полномочия всем локальным пользователям как
. Иначе, анонимная учетная запись
пользователя для user_name
@localhostlocalhost
в mysql.user
таблица
(создаваемый во время установки MySQL) используется, когда названный пользователями пытаются войти в систему
к серверу MySQL от локальной машины. Для получения дополнительной информации см. Раздел
6.2.4, "Управление доступом, Этап 1: Проверка Соединения".
Чтобы определить, применяется ли предыдущее предупреждение к Вам, выполните следующий запрос, который перечисляет любых анонимных пользователей:
SELECT Host, User FROM mysql.user WHERE User='';
Чтобы избежать проблемы, только описанной, удалите локальную анонимную учетную запись пользователя, используя этот оператор:
DROP USER ''@'localhost';
GRANT
поддерживает имена хоста до 60 символов долго. База данных, таблица,
столбец, и стандартные имена могут быть до 64 символов. Имена пользователей могут быть до 16 символов.
Допустимая длина для имен пользователей не может быть изменена, изменяясь
mysql.user
таблица. Попытка сделать так результаты в непредсказуемом поведении,
которое может даже лишить возможности пользователей входить в систему к серверу MySQL. Никогда
недопустимо изменять ни одну из таблиц в mysql
база данных любым способом
вообще кроме посредством процедуры, описанной в Разделе
4.4.7, "mysql_upgrade — Таблицы MySQL Check и Upgrade"
.
Пользовательская спецификация может указать, как пользователь должен аутентифицировать, соединяясь с сервером
посредством включения IDENTIFIED BY
или IDENTIFIED
WITH
пункт. Синтаксис является тем же самым что касается CREATE USER
оператор. См. Раздел
13.7.1.2,"CREATE USER
Синтаксис".
Когда IDENTIFIED BY
пункт присутствует, и у Вас есть глобальные полномочия
предоставления, пароль становится новым паролем для учетной записи, даже если учетная запись существует и уже
имеет пароль. Без IDENTIFIED BY
пункт, пароль учетной записи остается неизменным.
Если учетную запись называют в a GRANT
оператор не существует в mysql.user
таблица, GRANT
создает это если NO_AUTO_CREATE_USER
Режим SQL не включается. Это
очень небезопасно, если Вы не определяете непустое использование пароля IDENTIFIED
BY
или использование плагина аутентификации IDENTIFIED WITH
.
Если учетная запись не существует и NO_AUTO_CREATE_USER
включается, GRANT
сбои и не создают учетную запись, если Вы не определяете непустой пароль с
IDENTIFIED BY
или определите IDENTIFIED WITH
пункт,
чтобы назвать плагин аутентификации.
С MySQL 5.6.12, если учетная запись действительно существует, IDENTIFIED WITH
пункт
запрещается, потому что он предназначается для использования, создавая новые учетные записи.
GRANT
может быть записан в журналах сервера или в файле истории такой как ~/.mysql_history
, что означает, что пароли в виде открытого текста могут
быть считаны любым имеющим доступ для чтения к той информации. См. Раздел
6.1.2, "Сохраняя Пароли, Безопасные".
WITH
пункт используется в нескольких целях:
Позволять пользователю предоставить полномочия другим пользователям
Определить ресурс ограничивает для пользователя
Определить, ли и как пользователь должен использовать безопасные соединения с сервером
WITH GRANT OPTION
пункт дает пользователю возможность дать другим пользователям
любые полномочия, которые пользователь имеет на указанном уровне полномочий. Следует делать все возможное, кого
Вы даете GRANT OPTION
полномочие, потому что два пользователя с различными полномочиями могут быть в состоянии объединить полномочия!
Невозможно предоставить другому пользователю полномочие, которое сами Вы не имеете; GRANT OPTION
полномочие позволяет Вам присвоить только те полномочия, которыми
сами Вы обладаете.
Знайте это, когда Вы предоставляете пользователю GRANT OPTION
полномочие на определенном уровне полномочий, любые полномочия
пользователь обладает (или может быть дан в будущем) на том уровне, может также быть предоставлен тем
пользователем другим пользователям. Предположите, что Вы предоставляете пользователю INSERT
полномочие на базе данных. Если Вы тогда предоставляете SELECT
полномочие на базе
данных и определяет WITH GRANT OPTION
, тот пользователь может дать другим
пользователям не только SELECT
полномочие, но также и INSERT
.
Если Вы тогда предоставляете UPDATE
полномочие пользователю на базе данных, пользователь может
предоставить INSERT
, SELECT
, и UPDATE
.
Для неадминистративного пользователя недопустимо предоставить ALTER
дайте полномочия глобально или для mysql
база
данных. Если Вы делаете это, пользователь может попытаться ниспровергать систему полномочия, переименовывая
таблицы!
Для дополнительной информации об угрозах безопасности, связанных с определенными полномочиями, см. Раздел 6.2.1, "Полномочия, Обеспеченные MySQL".
Несколько WITH
опции пункта определяют пределы на использовании ресурсов сервера
учетной записью:
MAX_QUERIES_PER_HOUR
, count
MAX_UPDATES_PER_HOUR
, и count
MAX_CONNECTIONS_PER_HOUR
пределы ограничивают число запросов, обновлений,
и соединений с сервером, разрешенным к этой учетной записи в течение любого данного одночасового
периода. (Запросы, для которых результаты подаются от кэша запроса, не говорят против count
MAX_QUERIES_PER_HOUR
предел.), Если count
0
(значение по
умолчанию), это означает, что нет никакого ограничения для учетной записи.
MAX_USER_CONNECTIONS
предел ограничивает максимальное количество
одновременных соединений с сервером учетной записью. Ненулевое count
count
определяет предел для учетной записи явно. Если count
0
(значение по
умолчанию), сервер определяет число одновременных соединений для учетной записи от глобального значения
max_user_connections
системная переменная. Если max_user_connections
также нуль, нет никакого предела для учетной
записи.
Чтобы определить пределы ресурса для существующего пользователя, не влияя на существующие полномочия,
использовать GRANT
USAGE
на глобальном уровне (ON *.*
) и назовите пределы, которые
будут изменены. Например:
GRANT USAGE ON *.* TO ... WITH MAX_QUERIES_PER_HOUR 500 MAX_UPDATES_PER_HOUR 100;
Пределы, не определенные, сохраняют свою текущую стоимость.
Для получения дополнительной информации по ограничению доступа к ресурсам сервера см. Раздел 6.3.4, "Устанавливая Пределы Ресурса Учетной записи".
MySQL может проверить атрибуты сертификата X509 в дополнение к обычной аутентификации, которая основана на имени
пользователя и пароле. Чтобы определить связанные с SSL опции для учетной записи MySQL, используйте REQUIRE
пункт GRANT
оператор. (Для вводной информации об использовании SSL с MySQL см. Раздел
6.3.9, "Используя SSL для Безопасных Соединений".)
Есть много различных возможностей для того, чтобы ограничить типы подключения для сделанного отчета:
REQUIRE NONE
указывает, что у учетной записи нет
никакого SSL или требований X509. Это - значение по умолчанию если не связанный с SSL REQUIRE
опции определяются. Незашифрованные соединения разрешаются, если
имя пользователя и пароль допустимы. Однако, зашифрованные соединения могут также использоваться в опции
клиента, если у клиента есть надлежащий сертификат и файлы ключей. Таким образом, клиент не должен
определить опции команды SSL, когда соединение будет незашифровано. Чтобы использовать зашифрованное
соединение, клиент должен определить любого --ssl-ca
опция, или все три из --ssl-ca
, --ssl-key
, и --ssl-cert
опции.
REQUIRE SSL
опция говорит серверу разрешать только
зашифрованные SSL соединения для учетной записи.
GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' IDENTIFIED BY 'goodsecret' REQUIRE SSL;
Чтобы соединиться, клиент должен определить --ssl-ca
опция, чтобы аутентифицировать сертификат сервера, и может
дополнительно определить --ssl-key
и --ssl-cert
опции. Если ни один --ssl-ca
опция, ни --ssl-capath
опция определяется, клиент не аутентифицирует
сертификат сервера.
REQUIRE X509
средства, что у клиента должен быть
допустимый сертификат, но что точный сертификат, выпускающий, и предмет не имеют значения. Единственное
требование - то, что должно быть возможно проверить свою подпись с одним из сертификатов CA.
GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' IDENTIFIED BY 'goodsecret' REQUIRE X509;
Чтобы соединиться, клиент должен определить --ssl-ca
, --ssl-key
, и --ssl-cert
опции. Это - также истина для ISSUER
и SUBJECT
потому что те REQUIRE
опции подразумевают X509
.
REQUIRE ISSUER '
устанавливает ограничение для попыток
подключения, что клиент должен представить допустимый сертификат X509, выпущенный CA issuer
''
. Если клиент
представляет сертификат, который допустим, но имеет различного выпускающего, сервер отклоняет
соединение. Использование сертификатов X509 всегда подразумевает шифрование, таким образом, issuer
'SSL
опция является ненужной в этом случае.
GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' IDENTIFIED BY 'goodsecret' REQUIRE ISSUER '/C=FI/ST=Some-State/L=Helsinki/ O=MySQL Finland AB/CN=Tonu Samuel/emailAddress=tonu@example.com';
'
значение должно быть
введено как единственная строка.issuer
'
Если MySQL соединяется против версии OpenSSL, более старого чем 0.9.6h, использовать
Email
вместо emailAddress
в '
значение.issuer
'
REQUIRE SUBJECT '
устанавливает ограничение для попыток подключения, что клиент должен представить допустимый сертификат
X509, содержащий предмет subject
'subject
. Если клиент представляет
сертификат, который допустим, но имеет различный предмет, сервер отклоняет соединение.
GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' IDENTIFIED BY 'goodsecret' REQUIRE SUBJECT '/C=EE/ST=Some-State/L=Tallinn/ O=MySQL demo client certificate/ CN=Tonu Samuel/emailAddress=tonu@example.com';
'
значение должно быть
введено как единственная строка. MySQL делает простое сравнение строк этого значения к значению в
сертификате, таким образом, lettercase и компонентное упорядочивание должны быть даны точно как
существующие в сертификате.subject
'
Относительно emailAddress
, см. примечание в описании REQUIRE ISSUER
.
REQUIRE CIPHER '
необходим, чтобы гарантировать, что шифры и
длины ключа достаточной силы используются. Сам SSL может быть слабым, если старые алгоритмы, используя
короткие ключи шифрования используются. Используя эту опцию, можно попросить, чтобы определенный метод
шифра использовался для соединения. cipher
'
GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' IDENTIFIED BY 'goodsecret'REQUIRE CIPHER 'EDH-RSA-DES-CBC3-SHA';
SUBJECT
, ISSUER
, и CIPHER
опции могут быть объединены в REQUIRE
пункт как это:
GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' IDENTIFIED BY 'goodsecret' REQUIRE SUBJECT '/C=EE/ST=Some-State/L=Tallinn/ O=MySQL demo client certificate/ CN=Tonu Samuel/emailAddress=tonu@example.com' AND ISSUER '/C=FI/ST=Some-State/L=Helsinki/ O=MySQL Finland AB/CN=Tonu Samuel/emailAddress=tonu@example.com' AND CIPHER 'EDH-RSA-DES-CBC3-SHA';
Порядок опций не имеет значения, но никакая опция не может быть определена дважды. AND
ключевое слово является дополнительным между REQUIRE
опции.
Если Вы используете таблицу, столбец, или стандартные полномочия для даже одного пользователя, сервер исследует таблицу, столбец, и стандартные полномочия для всех пользователей, и это замедляет MySQL немного. Точно так же, если Вы ограничиваете число запросов, обновлений, или соединений для каких-либо пользователей, сервер должен контролировать эти значения.
GRANT
Самые большие различия между MySQL и стандартными версиями SQL GRANT
:
MySQL связывает полномочия с комбинацией имени хоста и имени пользователя а не с только именем пользователя.
У стандартного SQL нет глобальных или полномочий на уровне базы данных, и при этом он не поддерживает все типы полномочия, которые поддерживает тот MySQL.
MySQL не поддерживает стандартный SQL UNDER
полномочие.
Стандартные полномочия SQL структурируются иерархическим способом. Если Вы удаляете
пользователя, отменяются все полномочия, которые предоставили пользователю. Это - также истина в MySQL,
если Вы используете DROP USER
. См. Раздел 13.7.1.3,"DROP USER
Синтаксис".
В стандартном SQL, когда Вы отбрасываете таблицу, отменяются все полномочия для
таблицы. В стандартном SQL, когда Вы отменяете полномочие, также отменяются все полномочия, которые
предоставили основанные на том полномочии. В MySQL полномочия могут быть отброшены только с явным DROP USER
или REVOKE
операторы или управляя MySQL предоставляют таблицы
непосредственно.
В MySQL возможно иметь INSERT
полномочие для только некоторых из столбцов в таблице. В этом
случае можно все еще выполниться INSERT
операторы на таблице, при условии, что Вы вставляете значения
только для тех столбцов, для которых Вы имеете INSERT
полномочие. Опущенные столбцы устанавливаются в их неявные
значения по умолчанию, если строгий режим SQL не включается. В строгом режиме отклоняется оператор, если
у какого-либо из опущенных столбцов нет никакого значения по умолчанию. (Стандартный SQL требует, чтобы
Вы имели INSERT
полномочие на всех столбцах.) Раздел 5.1.7, "Режимы SQL Сервера",
обсуждает строгий режим. Раздел 11.5, "Значения по
умолчанию Типа данных", обсуждает неявные значения по умолчанию.