Внимание: phpMyAdmin не предоставляет собственных методов обеспечения безопасности MySQL-сервера. Предоставление привилегий в базе данных MySQL - прерогатива системного администратора. Страница phpMyAdmin's "Privileges" может быть использована именно для этого.
Быстрая установка
1. Распакуйте дистрибутив в корневую директорию вашего веб-сервера (убедитесь, что поддиректории распакованы тоже): tar -xzvf phpMyAdmin_x.x.x.tar.gz. Если Вы не имеете прямого доступа к корню вашего веб-пространства, распакуйте файлы в директорию на локальной машине и, после 3-го шага, скопируйте директорию на веб-сервер, например, через ftp.
2. Убедитесь, что все скрипты имеют соответствующего владельца (если PHP запущен в безопасном режиме, наличие нескольких скриптов, принадлежащих разным владельцам, вызовет проблему в работе).
3. Теперь Вы должны создать конфигурационный файл (config.inc.php). Создание конфигурационного файла - необходимое условие прежде всего для запуска phpMyAdmin, а также необходимо для задания некоторых возможностей. Эта задача может быть выполнена двумя разными способами. Традиционно, пользователи могут вручную отредактировать копию файла config.inc.php. Кроме этого, пользователи, предпочитающие графическую инсталляцию, могут воспользоваться мастером установки (скриптом инсталляции).
Для того, чтобы вручную создать конфигурационный файл, достаточно простейшего текстового редактора, с помощью которого нужно создать файл config.inc.php. Для упрощения задачи, Вы можете скопировать в текстовый редактор содержимое файла config.sample.inc.php - образца рабочей конфигурации, содержащей минимальное количество конфигурационных переменных.
Созданный файл необходимо поместить в главную директорию phpMyAdmin (ту, которая содержит index.php). phpMyAdmin сперва загружает libraries/config.default.php, а затем подменяет значения прописанных в нем переменных теми, что находит в config.inc.php. Если значение по умолчанию (тех переменных, что определены в libraries/config.default.php) Вас устраивает, тогда нет необходимости включать его в config.inc.php. Для запуска phpMyAdmin вам понадобятся как минимум несколько директив, простейшая конфигурация может выглядеть так:
PHP код:
<?php
$cfg['blowfish_secret'] = 'ba17c1ec07d65003'; // use here a value of your choice
$i=0;
$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
?>
Или, если вы не хотите вводить каждый раз логин/пароль (данная конфигурация не рекомендуется из соображений безопасности), конфигурационный файл может выглядеть так:
PHP код:
<?php
$i=0;
$i++;
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'cbb74bc'; // use here your password
?>
Вместо ручного редактирования файла config.inc.php, Вы можете использовать скрипт установки. Прежде всего, вам необходимо вручную создать в главной директории phpMyAdmin папку 'config'. Это - мера безопасности. При работе под ОС Linux/Unix Вы можете использовать следующие команды:
PHP код:
cd phpMyAdmin
mkdir config # создает директорию для хранения
chmod o+rw config # дает всем пользователям права на запись в неё
Для редактирования уже существующего конфигурационного файла, можно воспользоваться следующими командами:
PHP код:
cp config.inc.php config/ # копирует текущую конфигурацию для редактирования
chmod o+w config/config.inc.php # дает всем пользователям права на запись в неё
Затем, откройте в браузере scripts/setup.php. Помните, что изменения не будут сохранены на диск до тех пор, пока не будет нажата кнопка "Save" в блоке "Configuration". Если все хорошо, то скрипт сохранит новый config.inc.php в директорию config/, но если веб-сервер не имеет необходимых прав, Вы можете увидеть сообщение об ошибке "Cannot load or save configuration". В таком случае, убедитесь, что директория config/ создана и имеет необходимые права, либо воспользуйтесь ссылкой "Download" для сохранения конфигурационного файла на локальный диск и последующей закачки (например, через FTP) на сервер.
Как только файл был сохранен, необходимо переместить его из директории config/ в главную директорию phpMyAdmin и в целях безопасности сбросить права на него:
PHP код:
mv config/config.inc.php . # перемещает файл в текущую директорию
chmod o-rw config.inc.php # отменяет права на чтение и запись для всех остальных пользователей
Теперь файл готов к использованию. Вы можете просмотреть и отредактировать конфигурационный файл в текстовом редакторе, если потребуется установка некоторых расширенных опций, настройка которых не предусмотрена скриптом установки.
Откройте главную директорию phpMyAdmin в вашем браузере. Должно появиться окно приветствия phpMyAdmin и Ваши базы данных, или окно ввода логина, в случае использования режима HTTP- или cookie-аутентификации.
Вы должны запретить доступ к субдиректории ./libraries средствами вашего веб-сервера. В случае использования веб-сервера Apache для защиты директории Вы можете использовать файл .htaccess. При использовании других веб-серверов вы должны запретить доступ к директории ./libraries самостоятельно. Подобная конфигурирование - превентивная мера на случай обнаружения уязвимостей: возможного раскрытия пути (path exposure) и межсайтового выполнения сценариев (Cross-site Scripting, XSS).
Обновление старой версии
Просто скопируйте конфигурационный файл ./config.inc.php от предыдущей версии в директорию куда был распакован phpMyAdmin. Конфигурационные файлы из очень старых версий (2.3.0 or older) могут потребовать некоторых настроек, т.к. некоторые опции были изменены или удалены.
Не рекомендуется использовать (копировать) файл libraries/config.default.php вместо config.inc.php, т.к. файл config.default.php является специфичным для каждой версии.
Если Вы обновили свой MySQL-сервер с версии старше, чем 4.1.2 до версии 4.1.2 или новее,и используете инфраструктуру связанных таблиц, тогда необходимо запустить SQL-скрипт, который находится в scripts/upgrade_tables_mysql_4_1_2+.sql.
Использование режимов аутентификации
Режимы HTTP- и cookie- аутентификации рекомендуются при многопользовательской среде, где вы можете разрешать доступ пользователям к своим базам данных и запрещать им выходить за пределы своего окружения.
Необходимо иметь ввиду, что Internet Explorer имеет некоторые проблемы при работе с куками, вплоть до 6-й версии. PHP 4.1.1 также имеет некоторые проблемы в этой области!
Даже в однопользовательской среде, вы можете использовать режим HTTP- или cookie- аутентификации, чтобы не указывать в конфигурационном файле пару "логин/пароль".
Режимы HTTP и cookie аутентификации более безопасны, т.к. нет необходимости хранить учетную информацию MySQL в конфигурационном файле phpMyAdmin (исключение для controluser).
Тем не менее, помните, что в режиме HTTP-аутентификации пароль передается незашифрованным обычным текстом, за исключением того случая когда используется HTTPS протокол.
В режиме cookie-аутентификации пароль хранится зашифрованным с помощью алгоритма blowfish во временных куках.
Внимание: начиная с phpMyAdmin 2.6.1, эта секция актуальна только в том случае если версия Вашего MySQL выше, чем 4.1.2, или сервер запущен с параметром
PHP код:
--skip-show-database
При использовании 'HTTP' и 'cookie' режимов phpMyAdmin, рекомендуется завести пользователя (controluser), который должен обладать правами только на выборку (SELECT) из следующих таблиц: mysql.user (все столбцы за исключением "Password"), mysql.db (все столбцы), mysql.host (все столбцы) и mysql.tables_priv (все столбцы за исключением "Grantor" и "Timestamp").
Необходимо установить настройки для controluser в файле config.inc.php в следующих секциях:
PHP код:
$cfg['Servers'][$i]['controluser'] и $cfg['Servers'][$i]['controlpass']
В нижеприведенном примере, в обучающих целях используются следующие значения для: 'controluser' - 'pma', 'pmapass' - 'controlpass'. Но на практике используйте другие значения в своих файлах!
Разумеется, localhost в случае необходимости нужно заменить на реальное имя веб-сервера.
Если вы используете старую версию MySQL (ниже 4.0.2), замените первый запрос GRANT SELECT следующим образом:
PHP код:
GRANT SELECT ( Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv ) ON mysql.user TO 'pma'@'localhost';
... и если Вы хотите использовать возможности закладок и связей:
PHP код:
GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';
(конечно, подразумевается, что должна быть настроена инфраструктура связанных таблиц).
Разумеется, вышеприведенный запрос работает только в том случае, если рабочая версия MySQL поддерживает команду GRANT (поддерживается начиная с версии 3.22.11).
После этого каждый из истинных пользователей будет наделен соответствующими привилегиями для отдельных баз данных. Как правило, глобальные привилегии не даются обычным пользователям, за исключением того случая, если без них не обойтись и вы четко представляете себе последствия назначения данных привилегий (например, вам надо создать суперпользователя).
Например, чтобы наделить пользователя 'real_user' всеми привилегиями в базе данных `user_base`:
PHP код:
GRANT ALL PRIVILEGES ON user_base.* TO 'real_user'@localhost IDENTIFIED BY 'real_password';
Все, что теперь пользователь может, полностью контролируется пользовательской системой управления MySQL.
При использовании режимов HTTP или cookie аутентификации, вам не нужно заполнять поля user/password внутри массива $cfg['Servers'].
'config' - аутентификация
Этот режим обеспечивает минимальную безопасность, т.к. требует от Вас заполнения полей $cfg['Servers'][$i]['user'] и $cfg['Servers'][$i]['password'] (и как результат, каждый кто может читать Ваш config.inc.php может узнать Ваши логин и проль для подключения к MySQL-серверу).
Но при использовании данного режима пропадает необходимость создания "controluser"-а: использования $cfg['Servers'][$i]['only_db'] может быть достаточно.
Для дополнительной безопасности в данном режиме, Вы можете использовать Host-идентификацию, а также конфигурационные директивы: $cfg['Servers'][$i]['AllowDeny']['order'] и $cfg['Servers'][$i]['AllowDeny']['rules'].
При использовании config-аутентификации пользователю при попытке запуска phpMyAdmin не предлагается ввести логин и пароль, как это происходит при использовании cookie- и http-аутентификации. Это сделано умышлено, но в то же время это позволяет любому пользователю получить доступ к phpMyAdmin. В связи с этим будет целесообразным использование некоторых методов ограничения доступа, например, использования .htaccess файла с HTTP-AUTH директивой, или запрещения входящих HTTP запросов с помощью маршрутизатора или брандмауэра будет достаточно (эти два способа не рассматриваются в данном руководстве, но с помощью поисковиков можно найти исчерпывающую информацию по данной теме).