Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #52, МАРТ 2005 г.

MySQL в разрезе

Никита Кислицин

Спецвыпуск: Хакер, номер #052, стр. 052-036-4


mysql> update user set password=password('NewPasswd') where user=’username’;

Открою один секрет: работать под рутовой записью не всегда здорово из соображений безопасности. Поэтому обязательно надо сделать рабочего пользователя, которому будет доступна только одна база данных или несколько таблиц. Особенно это актуально для автономных систем, которые используют твой сервер. Если php-скрипт, который работает с базой данных, поломают и он будет использовать рутовую запись, хакер получит самый настоящий подарок! Поэтому очень важно четко разграничивать права доступа к таблицам. Не следует давать пользователю больше полномочий, чем ему нужно для работы.

Чтобы добавить пользователя MySQL, есть несколько путей.

Первый из них заключается в том, чтобы руками менять системные таблицы. Вряд ли это удобно: табличка user имеет 33 поля. Чтобы облегчить жизнь администраторам БД, разработчики MySQL сделали специальную конструкцию GRANT, которая используется для определения прав доступа и создания новых пользователей. Вот так можно добавить нового пользователя user:

Grant ALL on dbname.* to '<user>' identified by 'password'

Конфигурирование

Как любой полноценный сервис, MySQL обладает собственным конфигурационным файлом. Это может показаться странным, но после установки почему-то этот файл не создается и используются настройки по умолчанию. Чтобы исправить это недоразумение, копируем пример конфигурационного файла из папки support-files в /etc/my.cnf:

cp /usr/src/mysql-standard-5.0.2-alpha-unknown-freebsd4.7-i386/support-files/my-medium.cnf /etc/my.cnf

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

Новые фишки

Теперь настало время рассказать о том, какие возможности были добавлены в версиях MySQL 4.1 и 5.0 и чем они так отличаются от древних дистрибутивов вроде 4.0. Самая главная фишка в 4.1, – это возможность использования вложенных запросов: в параметр внешнего предложения можно подставить результат выполнения внутреннего отдельного запроса. Например, вот так:

Select bid, name, price from books where aid=(select aid from authors where name=’Петров Виталий Витальевич’)

Кроме того, было немного модифицировано предложение CREATE: теперь доступно ключевое слово LIKE, указывающее, что создаваемая таблица должна иметь такую же структуру, какая имеется в уже существующей. Так, например, CREATE TABLE tbl2 LIKE tbl1 создаст таблицу tbl1 с такой же структурой, как и tbl2.

Также добавлена возможность использования кодировок на уровне отдельных полей таблиц. Серьезные изменения претерпел подход к аутентификации пользователей: теперь используется избыточное криптование модифицированным алгоритмом. Если раньше каждый пароль в закриптованном виде занимал 16 байт, теперь его длина составляет 41 символ. Такое нововведение было призвано усложнить взлом хэша, поскольку стандартный md5 ломается довольно быстро.

Назад на стр. 052-036-3  Содержание  Вперед на стр. 052-036-5