|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Обычно, Вы управляете содержанием таблиц предоставления в mysql база данных
косвенно при использовании операторов такой как GRANT и REVOKE устанавливать учетные записи и управлять полномочиями, доступными
каждому. См. Раздел 13.7.1, "Операторы Ведения счетов".
Обсуждение здесь описывает глубинную структуру таблиц предоставления и как сервер использует их содержание,
взаимодействуя с клиентами.
Они mysql таблицы базы данных содержат информацию о предоставлении:
user: Содержит учетные записи пользователей, глобальные
полномочия, и другие столбцы неполномочия.
db: Содержит полномочия на уровне базы данных.
host: Устаревший. Новые установки MySQL больше не
составляют эту таблицу с MySQL 5.6.7.
tables_priv: Содержит полномочия на уровне таблицы.
columns_priv: Содержит полномочия на уровне столбца.
procs_priv: Содержит хранимую процедуру и
функциональные полномочия.
proxies_priv: Содержит полномочия пользователя прокси.
Другие таблицы в mysql база данных не содержит информацию о предоставлении и
обсуждается в другом месте:
event: Содержит информацию о событиях Event Scheduler:
См. Раздел
19.4, "Используя Планировщика События".
func: Содержит информацию об определяемых пользователем
функциях: См. Раздел 23.3, "Добавляя Новые Функции к
MySQL".
help_: Эти
таблицы используются для серверной справки: См. Раздел 5.1.10,
"Серверная Справка". xxx
plugin: Содержит информацию о плагинах сервера: См. Раздел 5.1.8.1, "Устанавливая и Удаляя
Плагины", и Раздел 23.2, "API MySQL Plugin".
proc: Содержит информацию о хранимых процедурах и
функциях: См. Раздел 19.2, "Используя
Сохраненные Подпрограммы (Процедуры и Функции)".
servers: Используемый FEDERATED механизм хранения: См. Раздел
14.9.2.2, "Создавая a FEDERATED Таблица Используя CREATE SERVER".
time_zone_:
Эти таблицы содержат информацию о часовом поясе: См. Раздел
10.6, "MySQL Server Time Zone Support". xxx
Таблицы с _log на их имя используются для того, чтобы
зарегистрировать: См. Раздел 5.2, "MySQL Server Logs".
Каждая таблица предоставления содержит столбцы контекста и столбцы полномочия:
Столбцы контекста определяют контекст каждой строки (запись) в таблицах; то есть,
контекст, в котором применяется строка. Например, a user строка таблицы с
Host и User значения 'thomas.loc.gov'
и 'bob' использовался бы для того, чтобы аутентифицировать соединения,
сделанные к серверу из узла thomas.loc.gov клиентом, который определяет имя
пользователя bob. Точно так же a db строка
таблицы с Host, User, и Db
значения столбцов 'thomas.loc.gov', 'bob' и
'reports' использовался бы когда bob
соединяется от узла thomas.loc.gov к доступу reports база данных. tables_priv и columns_priv таблицы содержат столбцы контекста, указывающие на таблицы
или комбинации таблицы/столбца, к которым применяется каждая строка. procs_priv столбцы контекста указывают на сохраненную подпрограмму, к
которой применяется каждая строка.
Столбцы полномочия указывают, какие полномочия предоставляет строка таблицы; то есть, какие операции могут быть выполнены. Сервер комбинирует информацию в различных таблицах предоставления, чтобы сформировать полное описание полномочий пользователя. Раздел 6.2.5, "Управление доступом, Этап 2: Проверка Запроса", описывает правила, которые используются, чтобы сделать это.
Сервер использует таблицы предоставления следующим способом:
user табличные столбцы контекста определяют, отклонить
ли или разрешить входящие соединения. Для разрешенных соединений, любые полномочия, предоставленные в
user таблица показывает глобальные полномочия пользователя. Любое
полномочие, предоставленное в этой таблице, применяется ко всем
базам данных на сервере.
Поскольку любое глобальное полномочие считают полномочием для всех баз данных, любое
глобальное полномочие позволяет пользователю видеть все имена базы данных с SHOW DATABASES или исследуя SCHEMATA таблица INFORMATION_SCHEMA.
db табличные столбцы контекста определяют, к которому
пользователи могут получить доступ который базы данных от который узлы. Столбцы полномочия определяют,
какие операции разрешаются. Полномочие, предоставленное на уровне базы данных, применяется к базе данных
и ко всем объектам в базе данных, таким как таблицы и сохраненные программы.
tables_priv и columns_priv
таблицы подобны db таблица, но являются более мелкомодульными: Они
применяются за таблицей и уровнями столбца, а не на уровне базы данных. Полномочие, предоставленное на
табличном уровне, применяется к таблице и ко всем ее столбцам. Полномочие, предоставленное на уровне
столбца, применяется только к определенному столбцу.
procs_priv таблица применяется к сохраненным
подпрограммам. Полномочие, предоставленное на стандартном уровне, применяется только к единственной
подпрограмме.
proxies_priv таблица показывает, какие пользователи
могут действовать как прокси для других пользователей и могут ли пользователи прокси предоставить PROXY полномочие
другим пользователям.
Сервер использует user и db таблицы в mysql база данных и на первых и на вторых этапах управления доступом (см. Раздел
6.2, "MySQL Access Privilege System"). Столбцы в user и db таблицы показывают здесь.
Таблица 6.3. user и db Столбцы
таблицы
| Имя таблицы | user |
db |
|---|---|---|
| Столбцы контекста | Host |
Host |
User |
Db |
|
Password |
User |
|
| Столбцы полномочия | Select_priv |
Select_priv |
Insert_priv |
Insert_priv |
|
Update_priv |
Update_priv |
|
Delete_priv |
Delete_priv |
|
Index_priv |
Index_priv |
|
Alter_priv |
Alter_priv |
|
Create_priv |
Create_priv |
|
Drop_priv |
Drop_priv |
|
Grant_priv |
Grant_priv |
|
Create_view_priv |
Create_view_priv |
|
Show_view_priv |
Show_view_priv |
|
Create_routine_priv |
Create_routine_priv |
|
Alter_routine_priv |
Alter_routine_priv |
|
Execute_priv |
Execute_priv |
|
Trigger_priv |
Trigger_priv |
|
Event_priv |
Event_priv |
|
Create_tmp_table_priv |
Create_tmp_table_priv |
|
Lock_tables_priv |
Lock_tables_priv |
|
References_priv |
References_priv |
|
Reload_priv |
||
Shutdown_priv |
||
Process_priv |
||
File_priv |
||
Show_db_priv |
||
Super_priv |
||
Repl_slave_priv |
||
Repl_client_priv |
||
Create_user_priv |
||
Create_tablespace_priv |
||
| Столбцы безопасности | ssl_type |
|
ssl_cipher |
||
x509_issuer |
||
x509_subject |
||
plugin |
||
authentication_string |
||
password_expired |
||
| Столбцы управления ресурсами | max_questions |
|
max_updates |
||
max_connections |
||
max_user_connections |
mysql.user таблица plugin и authentication_string
столбцы хранят информацию плагина аутентификации.
Если plugin столбец для строки учетной записи пуст, сервер использует собственную
аутентификацию для попыток подключения для учетной записи: Клиенты должны соответствовать пароль в Password столбец строки учетной записи.
Если строка учетной записи называет плагин в plugin столбец, сервер использует это,
чтобы аутентифицировать попытки подключения для учетной записи. Использует ли плагин значение в Password столбец до плагина.
password_expired столбец был добавлен в MySQL 5.6.6, чтобы разрешить DBA истекать
пароли учетной записи и требовать, чтобы пользователи сбросили свой пароль. Значение по умолчанию password_expired значение 'N', но может быть
установлен в 'Y' с ALTER
USER оператор. После того, как пароль учетной записи истекся, все операции, выполняемые учетной
записью в последующих соединениях с результатом сервера по ошибке до пользовательских проблем a SET PASSWORD оператор, чтобы установить новый пароль учетной записи. См. Раздел 13.7.1.1,"ALTER USER Синтаксис".
Возможно после истечения пароля "сбросить"
пароль при использовании SET PASSWORD
установить это в его текущую стоимость. Как хорошую политику, предпочтительно выбрать различный пароль.
В MySQL 5.6.6, ALTER USER
также наборы Password столбец к пустой строке, так что не используйте этот
оператор до 5.6.7.
Во время второго этапа управления доступом сервер выполняет проверку запроса, чтобы удостовериться, что у
каждого клиента есть достаточные полномочия для каждого запроса, который это выпускает. В дополнение к user и db таблицы предоставления, сервер может также
консультироваться tables_priv и columns_priv таблицы
для запросов, которые включают таблицы. Последние таблицы обеспечивают более прекрасное управление полномочием
на уровнях столбца и таблице. Им показали столбцы в следующей таблице.
Таблица 6.4. tables_priv и columns_priv TableColumns
| Имя таблицы | tables_priv |
columns_priv |
|---|---|---|
| Столбцы контекста | Host |
Host |
Db |
Db |
|
User |
User |
|
Table_name |
Table_name |
|
Column_name |
||
| Столбцы полномочия | Table_priv |
Column_priv |
Column_priv |
||
| Другие столбцы | Timestamp |
Timestamp |
Grantor |
Timestamp и Grantor столбцы устанавливаются в текущую
метку времени и CURRENT_USER значение, соответственно. Однако, они неиспользованы и
обсуждаются не далее здесь.
Для проверки запросов, которые включают сохраненные подпрограммы, сервер может консультироваться procs_priv таблица, которой показали столбцы в следующей таблице.
Таблица 6.5. procs_priv Столбцы таблицы
| Имя таблицы | procs_priv |
|---|---|
| Столбцы контекста | Host |
Db |
|
User |
|
Routine_name |
|
Routine_type |
|
| Столбцы полномочия | Proc_priv |
| Другие столбцы | Timestamp |
Grantor |
Routine_type столбец ENUM столбец со значениями 'FUNCTION' или 'PROCEDURE' чтобы указать на тип подпрограммы, строка обращается к. Этот столбец
позволяет полномочиям быть предоставленными отдельно для функции и процедуры с тем же самым именем.
Timestamp и Grantor столбцы в настоящий момент
неиспользованы и обсуждаются не далее здесь.
proxies_priv таблица записывает информацию о пользователях прокси. У этого есть эти
столбцы:
Host, User: Эти столбцы
указывают на учетную запись пользователя, которая имеет PROXY полномочие для проксированной учетной записи.
Proxied_host, Proxied_user:
Эти столбцы указывают на учетную запись проксированного пользователя.
Grantor: В настоящий момент неиспользованный.
Timestamp: В настоящий момент неиспользованный.
With_grant: Этот столбец указывает, может ли учетная
запись прокси предоставить PROXY полномочие к другим учетным записям.
Столбцы контекста в таблицах предоставления содержат строки. Они объявляются как показано здесь; значение по умолчанию для каждого является пустой строкой.
Таблица 6.6. Табличные Типы Столбца Контекста предоставления
| Имя столбца | Ввести |
|---|---|
Host, Proxied_host |
CHAR(60) |
User, Proxied_user |
CHAR(16) |
Password |
CHAR(41) |
Db |
CHAR(64) |
Table_name |
CHAR(64) |
Column_name |
CHAR(64) |
Routine_name |
CHAR(64) |
В проверяющих доступ целях, сравнениях User, Proxied_user, Password, Db,
и Table_name значения являются чувствительными к регистру. Сравнения Host, Proxied_host, Column_name,
и Routine_name значения не являются чувствительными к регистру.
В user и db таблицы, каждое полномочие перечисляется в
отдельном столбце, который объявляется как ENUM('N','Y') DEFAULT 'N'. Другими
словами каждое полномочие может быть отключено или включено с отключаемым значением по умолчанию.
В tables_priv, columns_priv, и procs_priv
таблицы, столбцы полномочия объявляются как SET
столбцы. Значения в этих столбцах могут содержать любую комбинацию полномочий, которыми управляет таблица.
Только те полномочия, перечисленные в значении столбца, включаются.
Таблица 6.7. Значения столбцов Полномочия типа набора
| Имя таблицы | Имя столбца | Возможные Элементы набора |
|---|---|---|
tables_priv |
Table_priv |
'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant',
'References', 'Index', 'Alter', 'Create View','Show view', 'Trigger' |
tables_priv |
Column_priv |
'Select', 'Insert', 'Update', 'References' |
columns_priv |
Column_priv |
'Select', 'Insert', 'Update', 'References' |
procs_priv |
Proc_priv |
'Execute', 'Alter Routine', 'Grant' |
Административные привилегии (такой как RELOAD
или SHUTDOWN) определяются
только в user таблица. Административные деятельности являются операциями на сервере
непосредственно и не специфичны для базы данных, таким образом нет никакой причины перечислить эти полномочия в
других таблицах предоставления. Следовательно, чтобы определить, можно ли выполнить административную
деятельность, сервер должен консультироваться только user таблица.
FILE полномочие также
определяется только в user таблица. Это не административная привилегия как таковая,
но Ваша возможность считать или записать, что файлы на узле сервера независимы от базы данных, к которой Вы
получаете доступ.
mysqld сервер читает содержание таблиц предоставления в память,
когда это запускается. Можно сказать этому перезагружать таблицы, выходя a FLUSH PRIVILEGES оператор или выполнение mysqladmin полномочия сброса или mysqladmin перезагружают команду. Изменения к таблицам
предоставления вступают в силу как обозначено в Разделе
6.2.6, "Когда Изменения Полномочия Вступают в силу".
Когда Вы изменяете полномочия учетной записи, это - хорошая идея проверить, что установленные изменения дают
полномочия способу, которым Вы хотите. Чтобы проверить полномочия на сделанный отчет, используйте SHOW GRANTS оператор (см. Раздел
13.7.5.22,"SHOW GRANTS Синтаксис"). Например, чтобы определить
полномочия, которые предоставляют учетной записи со значениями имени пользователя и имени хоста bob и pc84.example.com, используйте этот оператор:
SHOW GRANTS FOR 'bob'@'pc84.example.com';