Spec-Zone .ru
спецификации, руководства, описания, API
|
Обычно, Вы управляете содержанием таблиц предоставления в mysql
база данных
косвенно при использовании операторов такой как GRANT
и REVOKE
устанавливать учетные записи и управлять полномочиями, доступными
каждому. См. Раздел 13.7.1, "Операторы Ведения счетов".
Обсуждение здесь описывает глубинную структуру таблиц предоставления и как сервер использует их содержание,
взаимодействуя с клиентами.
Они mysql
таблицы базы данных содержат информацию о предоставлении:
user
: Содержит учетные записи пользователей, глобальные
полномочия, и другие столбцы неполномочия.
db
: Содержит полномочия на уровне базы данных.
host
: Устаревший. Новые установки MySQL больше не
составляют эту таблицу.
tables_priv
: Содержит полномочия на уровне таблицы.
columns_priv
: Содержит полномочия на уровне столбца.
procs_priv
: Содержит хранимую процедуру и
функциональные полномочия.
proxies_priv
: Содержит полномочия пользователя прокси.
Другие таблицы в mysql
база данных не содержит информацию о предоставлении и
обсуждается в другом месте:
event
: Содержит информацию о событиях Event Scheduler:
См. Раздел
18.4, "Используя Планировщика События".
func
: Содержит информацию об определяемых пользователем
функциях: См. Раздел 22.3, "Добавляя Новые Функции к
MySQL".
help_
: Эти
таблицы используются для серверной справки: См. Раздел 5.1.10,
"Серверная Справка". xxx
plugin
: Содержит информацию о плагинах сервера: См. Раздел 5.1.8.1, "Устанавливая и Удаляя
Плагины", и Раздел 22.2, "API MySQL Plugin".
proc
: Содержит информацию о хранимых процедурах и
функциях: См. Раздел 18.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
столбец разрешает DBA истекать пароли учетной записи и требовать,
чтобы пользователи сбросили свой пароль. Значение по умолчанию password_expired
значение 'N'
, но может быть установлен в 'Y'
с ALTER USER
оператор. После того, как пароль учетной записи истекся, все
операции, выполняемые учетной записью в последующих соединениях с результатом сервера по ошибке до
пользовательских проблем a SET
PASSWORD
оператор, чтобы установить новый пароль учетной записи. См. Раздел
13.7.1.1,"ALTER USER
Синтаксис".
Возможно после истечения пароля "сбросить"
пароль при использовании SET PASSWORD
установить это в его текущую стоимость. Как хорошую политику, предпочтительно выбрать различный пароль.
Во время второго этапа управления доступом сервер выполняет проверку запроса, чтобы удостовериться, что у
каждого клиента есть достаточные полномочия для каждого запроса, который это выпускает. В дополнение к 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.20,"SHOW GRANTS
Синтаксис"). Например, чтобы определить
полномочия, которые предоставляют учетной записи со значениями имени пользователя и имени хоста bob
и pc84.example.com
, используйте этот оператор:
SHOW GRANTS FOR 'bob'@'pc84.example.com';