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*';