П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 180603 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 79059 раз(а).

Учебник HTML.
Просмотров 75814 раз(а).

Руководство по PHP5.
Просмотров 46862 раз(а).

Хостинг через призму DNS.
Просмотров 54319 раз(а).

Подборка текстов стандартных документов.
Просмотров 46687 раз(а).

Учебник PHP - Самоучитель
Просмотров 52898 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 53503 раз(а).

Внешние атаки...
Просмотров 43251 раз(а).

Учебник PHP.
Просмотров 38780 раз(а).

SSI в примерах.
Просмотров 28691 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 4. Администрирование баз данных
Пред. След.

4.2. Общие проблемы безопасности и система привилегий доступа MySQL
4.2.7. Привилегии, предоставляемые MySQL

Информация о привилегиях пользователя хранится в таблицах user, db, host, tables_priv и columns_priv базы данных mysql (т.е. в базе данных с именем mysql). Сервер MySQL считывает содержимое этих таблиц во время запуска, и в случаях, указанных в разделе See Раздел 4.3.3, «Когда изменения в привилегиях вступают в силу».

Ниже приведены имена, используемые в данном руководстве для ссылок на привилегии, предоставляемые в MySQL 4.0.2. Здесь же указаны имена табличных столбцов, ассоциированных с каждой из привилегий в таблицах привилегий, наряду с контекстом, в котором эти привилегии имеют силу:

ПривилегияСтолбецКонтекст
ALTERAlter_privтаблицы
DELETEDelete_privтаблицы
INDEXIndex_privтаблицы
INSERTInsert_privтаблицы
SELECTSelect_privтаблицы
UPDATEUpdate_privтаблицы
CREATECreate_privбазы данных, таблицы или индексы
DROPDrop_privбазы данных или таблицы
GRANTGrant_privбазы данных или таблицы
REFERENCESReferences_privбазы данных или таблицы
CREATE TEMPORARY TABLESCreate_tmp_table_privадминистрирование сервера
EXECUTEExecute_privадминистрирование сервера
FILEFile_privдоступ к файлам на сервере
LOCK TABLESLock_tables_privадминистрирование сервера
PROCESSProcess_privадминистрирование сервера
RELOADReload_privадминистрирование сервера
REPLICATION CLIENTRepl_client_privадминистрирование сервера
REPLICATION SLAVERepl_slave_privадминистрирование сервера
SHOW DATABASESShow_db_privадминистрирование сервера
SHUTDOWNShutdown_privадминистрирование сервера
SUPERSuper_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 она позволяет выполнять.

ПривилегияКоманды, разрешенные обладателю привилегии
RELOADreload, refresh, flush-privileges, flush-hosts, flush-logs, and flush-tables
SHUTDOWNshutdown
PROCESSprocesslist
SUPERkill

Команда reload заставляет сервер перечитать таблицы привилегий. Команда refresh очищает все таблицы, а также открывает и закрывает файлы журналов. flush-privileges является синонимом reload. Остальные команды flush-* выполняют функции, аналогичные функциям команды refresh, но с более узкой областью действия. В некоторых случаях такие команды могут оказаться более предпочтительными. Например, если вы хотите очистить только системные журналы, команда flush-logs лучше, чем refresh.

Команда shutdown завершает работу сервера.

Команда processlist выводит информацию о задачах, выполняющихся на сервере. Команда kill уничтожает серверные потоки. Собственные потоки всегда можно просмотреть или уничтожить, но для отображения потоков, запущенных другими пользователями, нужна привилегия PROCESS,а для уничтожения потоков, запущенных другими пользователями, потребуется привилегия SUPER. Обратитесь к разделу See Раздел 4.5.5, «Синтаксис команды KILL».

В общем случае идея предоставлять привилегии только тем пользователям, которым они необходимы, хорошая, но к предоставлению некоторых из них следует относиться особенно внимательно:

  • Привилегия GRANT позволяет пользователям передавать свои привилегии другим пользователям. Два пользователя с неодинаковыми привилегиями, имея привилегию GRANT, способны объединить свои привилегии.

  • Привилегия ALTER может быть использована для переименования таблиц и разрушения таким образом всей системы привилегий.

  • Привилегия FILE может использоваться злонамеренно для считывания любого доступного файла, хранящегося на сервере, или любого файла в каталоге текущей базы данных в таблицу, к содержимому которой можно затем получить доступ с помощью команды SELECT.

  • Привилегия SHUTDOWN может использоваться злонамеренно для полного прекращения работы сервера и, таким образом, полного запрещения обслуживания других пользователей.

  • Привилегия PROCESS может быть использована для просмотра открытого текста запросов выполняющихся в данный момент, включая запросы на установку или изменение паролей.

  • Привилегии доступа к базе данных mysql могут быть использованы для изменения паролей и другой информации, относящейся к привилегиям доступа. (Пароли хранятся в зашифрованном виде, поэтому злоумышленник не сможет просто прочесть их, чтобы получить пароли в виде обычного текста). Получив доступ к столбцу паролей mysql.user, любой пользователь может войти на сервер MySQL под именем другого пользователя (имея достаточные привилегии, тот же самый пользователь может заменить пароль на другой).

Есть вещи, которые система привилегий MySQL делать не может:

  • Нельзя явно указать, что данному пользователю должен быть закрыт доступ. Т.е. вы не можете явно выбрать пользователя и затем отказать ему в подключении.

  • Нельзя указать, что некий пользователь имеет привилегии создавать или удалять таблицы в базе данных, но не имеет привилегий создавать или удалять саму базу данных.


Назад Начало Главы Начало Раздела Вперед

Пред. Глава След. Глава
Глава 3. Учебное пособие по MySQL Начало Книги Глава 5. Оптимизация в MySQL


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru