Не кладите все яйца в одну корзинку!

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

Подкину одну идею (в основном, для начинающих) как избежать лишних проблем с базами данных. Если у вас есть веб-сайт, а на нем есть форум или блог, то, скорее всего, он использует базу данных (СУБД), и скорее всего это MySQL. И к каждой веб-программе идет скрипт-установщик, где требуется просто ввести название базы (если такой нет, то он ее создаст), логин и пароль к базе данных… СТОП! Даю 10/1, что ваш логин в базе данных – root, а пароль совпадает с паролем администратора всей системы. Так? Значит, если ошибка в веб-приложении и оно падает, показывая файл конфигурации с сохраненным данными для подключения к БД, то злоумышленник, получив пароль к конкретной базе данных, получает доступ и ко всей системе? Продолжать?

Поэтому есть практика разграничения доступа везде, где это применимо и обосновано. В MySQL просто создаются базы данных под каждую программу со своим пользователем и паролем, который никогда (!) не совпадает с паролем главного администратора СУБД MySQL – root. Ничего сложного в этом нет, и не надо так коситься на пухлую пачку документации.

Предположим, что система (Linux, UNIX, Windows) у вас установлена и грамотно настроена, MySQL тоже установлена и вы помните пароль администратора (:D). Установим базу для приложения типа WordPress, которое будет работать локально на нашем сервере. Делаем так:

$ mysql -u root -p
Enter password:
mysql> CREATE DATABASE your_database_name;
mysql> GRANT ALL PRIVILEGES ON your_database_name.* TO "database_username"@"localhost" IDENTIFIED BY "use_strong_password";
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
$

Мы создали базу данных для нового приложения, пользователя и его пароль. Если вы не собираетесь использовать базу данных удаленно, задайте пользователю область действия “localhost”, тогда, даже зная логин и пароль, удаленно подключиться не получится. Теперь устанавливаем нужное нам приложение, и не забываем использовать данную практику всегда, когда имеем дело с базами данных. Это абсолютный минимум.

2 Comments

AntonioJanuary 16th, 2011 at 21:58

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

Плюшевый КрысJanuary 17th, 2011 at 04:42

Не всегда есть смысл притаскивать на сервер веб-сервер и PHP с PHPmyadmin, тем более, что эта связка не безгрешна с точки зрения безопасности. И вот когда их нет, начинаются судорожные попытки вспомнить синтаксис команд.

Leave a comment

Your comment