Установка phpMyAdmin

Внимание! phpMyAdmin не предоставляет собственных методов обеспечения безопасности MySQL-сервера. Предоставление привилегий в базе данных MySQL - прерогатива системного администратора. Страница phpMyAdmin's "Privileges" может быть использована именно для этого.

Предупреждение для пользователей Mac: если у вас установлена версия MacOS до OS X, StuffIt разархивируйте с помощью Mac-архиваторов. Пересохраните с помощью BBEdit в стиле Unix ВСЕ скрипты phpMyAdmin перед копированием их на сервер, т.к. PHP по-видимому не любит Mac-символы переноса строки ("\r")

Быстрая установка

1. Распакуйте дистрибутив в корневую директорию вашего веб-сервера (убедитесь, что поддиректории распакованы тоже): tar -xzvf phpMyAdmin_x.x.x.tar.gz. Если Вы не имеете прямого доступа к корню вашего веб-пространства, распакуйте файлы в директорию на локальной машине и, после 3-го шага, скопируйте директорию на веб-сервер, например, через ftp.
2. Убедитесь, что все скрипты имеют соответствующего владельца (если PHP запущен в безопасном режиме, наличие нескольких скриптов, принадлежащих разным владельцам, вызовет проблему в работе). Смотри FAQ 4.2 и FAQ 1.26.
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
    $cfg['blowfish_secret'] = 'ba17c1ec07d65003'; // use here a value of your choice
    $i=0;
    $i++;
    $cfg['Servers'][$i]['auth_type'] = 'cookie';
    ?>
    Или, если вы не хотите вводить каждый раз логин/пароль (данная конфигурация не рекомендуется из соображений безопасности), конфигурационный файл может выглядеть так:

    <?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 Вы можете использовать следующие команды:

    cd phpMyAdmin
    mkdir config # создает директорию для хранения
    chmod o+rw config # дает всем пользователям права на запись в неё

    Для редактирования уже существующего конфигурационного файла, можно воспользоваться следующими командами:

    cp config.inc.php config/ # копирует текущую конфигурацию для редактирования
    chmod o+w config/config.inc.php # дает всем пользователям права на запись в неё

    На других платформах, просто создайте директорию и убедитесь, что Ваш веб-сервер имеет права на чтение и запись в неё. FAQ 1.26 может помочь в этом случае.

    Затем, откройте в браузере scripts/setup.php. Помните, что изменения не будут сохранены на диск до тех пор, пока не будет нажата кнопка "Save" в блоке "Configuration". Если все хорошо, то скрипт сохранит новый config.inc.php в директорию config/, но если веб-сервер не имеет необходимых прав, Вы можете увидеть сообщение об ошибке "Cannot load or save configuration". В таком случае, убедитесь, что директория config/ создана и имеет необходимые права, либо воспользуйтесь ссылкой "Download" для сохранения конфигурационного файла на локальный диск и последующей закачки (например, через FTP) на сервер.

    Как только файл был сохранен, необходимо переместить его из директории config/ в главную директорию phpMyAdmin и в целях безопасности сбросить права на него:

    mv config/config.inc.php . # перемещает файл в текущую директорию
    chmod o-rw config.inc.php # отменяет права на чтение и запись для всех остальных пользователей

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

4. Если Вы собираетесь использовать "config" аутентификацию (auth_type), необходимо защитить директорию в которую был установлен phpMyAdmin от несанкционированного доступа, потому что данный режим позволяет любому пользователю получить доступ к phpMyAdmin без предварительного ввода логина/пароля. Рекомендуются альтернативные методы аутентификации, например, HTTP-AUTH (с помощью .htaccess файла), либо использованием одного из двух других методов аутентификации: cookie или http. См. подраздел FAQ "Мультипользовательская установка" для дополнительной информации, особенно обратите внимание на FAQ 4.4.
5. Откройте главную директорию phpMyAdmin в вашем браузере. Должно появиться окно приветствия phpMyAdmin и Ваши базы данных, или окно ввода логина, в случае использования режима HTTP- или cookie-аутентификации. 6. Вы должны запретить доступ к субдиректории ./libraries средствами вашего веб-сервера. В случае использования веб-сервера Apache для защиты директории Вы можете использовать файл .htaccess. При использовании других веб-серверов вы должны запретить доступ к директории ./libraries самостоятельно. Подобная конфигурирование - превентивная мера на случай обнаружения уязвимостей: возможного раскрытия пути (path exposure) и межсайтового выполнения сценариев (Cross-site Scripting, XSS).

Linked-tables infrastructure (Инфраструктура связанных таблиц)

Для использования многих опций (закладок, комментариев, SQL-истории, PDF-схем, преобразования содержимого полей, и т.д.) необходимо создать набор специальных таблиц. Эти таблицы могут находиться как в Вашей базе данных, так и в центральной базе при многопользовательской системе (в этом случае данная БД может быть доступна только для пользователя controluser, соответственно, другие пользователи не имеют прав на неё).
Зайдите в директорию scripts/, здесь вы найдете файл create_tables.sql. (Если используете Windows сервер, обратите особое внимание на FAQ 1.24).
Если у Вас установлена версия MySQL сервера 4.1.2 или более позднее, используйте вместо вышеуказанного файла create_tables_mysql_4_1_2+.sql, для новой инсталляции.
Если у вас уже есть готовая инфраструктура и вы обновляете MySQL до версии 4.1.2 или выше, используйте upgrade_tables_mysql_4_1_2+.sql.
Вы можете использовать phpMyAdmin для создания баз данных и таблиц, для этого необходимо обладать администраторскими привилегиями на создание баз данных и таблиц, в связи с чем скрипту может понадобиться небольшая настройка (указание названия базы данных).
После импорта create_tables.sql, Вы должны определить названия таблиц в файле config.inc.php, с помощью директив, описанных в разделе "Конфигурирование". Кроме этого необходимо обладать правами controluser на данные таблицы (см. ниже, раздел "Использование режима аутентификации").

Обновление старой версии

Просто скопируйте конфигурационный файл ./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, или сервер запущен с параметром --skip-show-database.

При использовании 'HTTP' и 'cookie' режимов phpMyAdmin, рекомендуется завести пользователя (controluser), который должен обладать правами только на выборку (SELECT) из следующих таблиц: mysql.user (все столбцы за исключением "Password"), mysql.db (все столбцы), mysql.host (все столбцы) и mysql.tables_priv (все столбцы за исключением "Grantor" и "Timestamp").

GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
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,
Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
Execute_priv, Repl_slave_priv, Repl_client_priv
) ON mysql.user TO 'pma'@'localhost';
GRANT SELECT ON mysql.db TO 'pma'@'localhost';
GRANT SELECT ON mysql.host TO 'pma'@'localhost';
GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
ON mysql.tables_priv TO 'pma'@'localhost';

Необходимо установить настройки для controluser в файле config.inc.php в следующих секциях: $cfg['Servers'][$i]['controluser'] и $cfg['Servers'][$i]['controlpass'].
В нижеприведенном примере, в обучающих целях используются следующие значения для: 'controluser' - 'pma', 'pmapass' - 'controlpass'. Но на практике используйте другие значения в своих файлах!

Разумеется, localhost в случае необходимости нужно заменить на реальное имя веб-сервера.
Если вы используете старую версию MySQL (ниже 4.0.2), замените первый запрос GRANT SELECT следующим образом:

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

... и если Вы хотите использовать возможности закладок и связей:

GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';

(конечно, подразумевается, что должна быть настроена инфраструктура связанных таблиц).
Разумеется, вышеприведенный запрос работает только в том случае, если рабочая версия MySQL поддерживает команду GRANT (поддерживается начиная с версии 3.22.11).

  • После этого каждый из истинных пользователей будет наделен соответствующими привилегиями для отдельных баз данных. Как правило, глобальные привилегии не даются обычным пользователям, за исключением того случая, если без них не обойтись и вы четко представляете себе последствия назначения данных привилегий (например, вам надо создать суперпользователя).
    Например, чтобы наделить пользователя 'real_user' всеми привилегиями в базе данных `user_base`:
    GRANT ALL PRIVILEGES ON user_base.* TO 'real_user'@localhost IDENTIFIED BY 'real_password';
    Все, что теперь пользователь может, полностью контролируется пользовательской системой управления MySQL.
    При использовании режимов HTTP или cookie аутентификации, вам не нужно заполнять поля user/password внутри массива $cfg['Servers'].

'http' - аутентификация

  • Использует HTTP Basic режим аутентификации и позволяет вход в систему как действительному пользователю MySQL.
  • Данный режим поддерживается большинством конфигураций PHP. Для получения дополнительной информации о настройке http-аутентификации на серверах где PHP установлен как CGI-модуль см. FAQ 1.33 - для серверов IIS (ISAPI), FAQ 1.36 - для Apache.
  • Смотрите также FAQ 4.4 о том, что не стоит использовать .htaccess механизм совместно с http-аутентификацией.

'cookie' - аутентификация

  • Вы можете использовать этот метод как альтернативу HTTP-аутентификации (например, если запущен IIS).
  • Разумеется, пользователь должен разрешить браузеру использовать куки. Теперь это необходимое требование для всех методов аутентификации
  • В этом режиме, после прохождения первичной идентификации phpMyAdmin создает на компьютере пользователя cookie-файл, содержащий логин и пароль пользователя, который будет автоматически подставляться при следующих сеансах.
  • При использовании данного режима пользователь может завершить сеанс phpMyAdmin и авторизоваться под другим именем.
  • Если вы собираетесь проходить процедуру идентификации на произвольном сервере обратите внимание на директиву $cfg['AllowArbitraryServer'].
  • Как указано в секции "Технические требования", наличие PHP библиотеки mcrypt на сервере способно ускорить фазу авторизации, но наличие её не обязательно.

'config' - аутентификация

  • Этот режим обеспечивает минимальную безопасность, т.к. требует от Вас заполнения полей $cfg['Servers'][$i]['user'] и $cfg['Servers'][$i]['password'] (и как результат, каждый кто может читать Ваш config.inc.php может узнать Ваши логин и проль для подключения к MySQL-серверу).
    Но при использовании данного режима пропадает необходимость создания "controluser"-а: использования $cfg['Servers'][$i]['only_db'] может быть достаточно
  • В разделе FAQ "Многопользовательская установка, есть пункт, объясняющий как защитить конфигурационный файл phpMyAdmin.
  • Для дополнительной безопасности в данном режиме, Вы можете использовать Host-идентификацию, а также конфигурационные директивы: $cfg['Servers'][$i]['AllowDeny']['order'] и $cfg['Servers'][$i]['AllowDeny']['rules'].
  • При использовании config-аутентификации пользователю при попытке запуска phpMyAdmin не предлагается ввести логин и пароль, как это происходит при использовании cookie- и http-аутентификации. Это сделано умышлено, но в то же время это позволяет любому пользователю получить доступ к phpMyAdmin. В связи с этим будет целесообразным использование некоторых методов ограничения доступа, например, использования .htaccess файла с HTTP-AUTH директивой, или запрещения входящих HTTP запросов с помощью маршрутизатора или брандмауэра будет достаточно (эти два способа не рассматриваются в данном руководстве, но с помощью поисковиков можно найти исчерпывающую информацию по данной теме).