Аргерих Л. О языке РНР. Часть 5. Страница 75


mysqladmin -p -и root shutdown

Допустим, что каталог данных mysql расположен в /home/mysql/data, тогда на­до предоставить доступ к этим каталогам только пользователю mysql (в по­следующих командах указывается как mysql). Это можно обеспечить выпол­нением в оболочке следующих команд:

chown -R mysql /home/mysql/data chmod -R go-rwx /home/mysql/data

При наличии в этих каталогах символических ссылок те же команды долж­ны быть выполнены с адресатом этих символических ссылок.

Кроме того, проверьте, чтобы сокет unix не находился в том же каталоге дан­ных. Это обеспечивается параметром настройки -with-unix-socket-path при компиляции.

Наконец, перезапустим сервер MySQL. Это делается с помощью сценария fe_mysql, выполняемого от имени пользователя mysql:

safe_mysql -user=mysql &

Можно обойти использование параметра user при каждом запуске mysql, ес­ли задать его в файле my. cnf в разделе [mysqld]:

user=mysql

Еще одна мера предосторожности заключается в защите файла /etc/ту. cnf. Иначе ничто не помешает кому-нибудь установить в директиве User пользо­вателя root. Владельцем этого файла должен быть root, но права чтения должны быть предоставлены всем. Это достигается командами:

chown root /etc/ту.cnf chmod 644 /etc/ту.cnf

Уборка

Целесообразно удалить различные малозначительные компоненты, вклю­ченные в установку по умолчанию, в том числе:

♦ Удалить тестовую базу данных

♦ Отключить удаленный доступ

♦ Отключить доступ без имени пользователя

♦ Задать пароль для root

Чтобы выполнить эти подключитесь к базе данных из командной

строки:

mysql -u root -p

Эта команда должна создать соединение с базой данных от имени пользова­теля root. Если у пользователя root нет пароля, не следует задавать параметр -p, иначе доступ не будет предоставлен. Если возникнут проблемы на этом этапе, обратитесь к документации MySQL. Первая задача - удалить базу данных test. Она совершенно не нужна нам, и обычно сохранение ее остав­ляет возможность атаки:

mysql> DROP DATABASE test;

Приведенная команда SQL решает задачу. Теперь надо подчистить права до­ступа. MySQL хранит информацию о правах доступа и других базах данных сервера в базе данных mysql. Поэтому выберем mysql в качестве текущей базы данных. Это делает следующая команда:

mysql> USE mysql;

Мы хотим завершить удаление тестовой базы данных, запретить удаленный доступ, доступ без имени пользователя и задать пароль для пользователя root:

mysql> DELETE FROM db WHERE Db LIKE 'test*';