Информация о привилегиях пользователя хранится в таблицах user, db, host, tables_priv и columns_priv базы данных mysql (т.е. в базе данных с именем mysql). Сервер MySQL считывает содержимое этих таблиц во время запуска, и в случаях, указанных в разделе See section 4.3.3 Когда изменения в привилегиях вступают в силу.
Ниже приведены имена, используемые в данном руководстве для ссылок на привилегии, предоставляемые в MySQL 4.0.2. Здесь же указаны имена табличных столбцов, ассоциированных с каждой из привилегий в таблицах привилегий, наряду с контекстом, в котором эти привилегии имеют силу:
Привилегия | Столбец | Контекст
|
ALTER | Alter_priv | таблицы |
DELETE | Delete_priv | таблицы |
INDEX | Index_priv | таблицы |
INSERT | Insert_priv | таблицы |
SELECT | Select_priv | таблицы |
UPDATE | Update_priv | таблицы |
CREATE | Create_priv | базы данных, таблицы или индексы |
DROP | Drop_priv | базы данных или таблицы |
GRANT | Grant_priv | базы данных или таблицы |
REFERENCES | References_priv | базы данных или таблицы |
CREATE TEMPORARY TABLES | Create_tmp_table_priv | администрирование сервера |
EXECUTE | Execute_priv | администрирование сервера |
FILE | File_priv | доступ к файлам на сервере |
LOCK TABLES | Lock_tables_priv | администрирование сервера |
PROCESS | Process_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 | администрирование сервера |
Привилегии SELECT, INSERT, UPDATE и DELETE позволяют выполнять операции над строками таблиц баз данных.
Для операторов SELECT привилегия SELECT требуется только в том случае, если они действительно извлекают строки из таблицы.. В ряде случае можно выполнять операторы SELECT, даже не имея разрешения на доступ ни к одной базе данных на сервере. Например: клиент mysql вы можете использовать в качестве обычного калькулятора:
mysql> SELECT 1+1; mysql> SELECT PI()*2;
Привилегия INDEX позволяет создавать или уничтожать (удалять) индексы.
Привилегия ALTER позволяет использовать команду ALTER TABLE.
Привилегии CREATE и DROP позволяют создавать новые базы данных и таблицы или уничтожать (удалять) существующие базы данных и таблицы.
Заметим, что в случае, если пользователю предоставляется привилегия DROP по отношению к базе данных mysql, он может уничтожить базу данных, в которой хранятся привилегии доступа в MySQL!
Привилегия GRANT позволяет вам предоставлять другим пользователям привилегии, которыми обладаете вы сами.
Привилегия FILE дает вам право читать и записывать файлы на сервере с помощью операторов LOAD DATA INFILE и SELECT ... INTO OUTFILE. Любой пользователь, которому предоставлена такая привилегия, имеет право прочитать или записать любой файл, который может прочитать или записать сервер MySQL.
Остальные привилегии используются для операций администрирования, выполняемых с помощью программы mysqladmin. В таблице, приведенной ниже, для каждой из привилегий администрирования показано, какие команды mysqladmin она позволяет выполнять.
Привилегия | Команды, разрешенные обладателю привилегии |
RELOAD | reload, refresh, flush-privileges, flush-hosts, flush-logs, and flush-tables |
SHUTDOWN | shutdown |
PROCESS | processlist |
SUPER | kill |
Команда reload заставляет сервер перечитать таблицы привилегий. Команда refresh очищает все таблицы, а также открывает и закрывает файлы журналов. flush-privileges является синонимом reload. Остальные команды flush-* выполняют функции, аналогичные функциям команды refresh, но с более узкой областью действия. В некоторых случаях такие команды могут оказаться более предпочтительными. Например, если вы хотите очистить только системные журналы, команда flush-logs лучше, чем refresh.
Команда shutdown завершает работу сервера.
Команда processlist выводит информацию о задачах, выполняющихся на сервере. Команда kill уничтожает серверные потоки. Собственные потоки всегда можно просмотреть или уничтожить, но для отображения потоков, запущенных другими пользователями, нужна привилегия PROCESS,а для уничтожения потоков, запущенных другими пользователями, потребуется привилегия SUPER. Обратитесь к разделу See section 4.5.5 Синтаксис команды KILL.
В общем случае идея предоставлять привилегии только тем пользователям, которым они необходимы, хорошая, но к предоставлению некоторых из них следует относиться особенно внимательно:
Есть вещи, которые система привилегий MySQL делать не может:
4.2.6 Как работает система привилегий | Оглавление | 4.2.8 Соединение с сервером MySQL |