Что такое phpMyAdmin
phpMyAdmin – это свободное программное обеспечение для работы с MySQL в сети, другими словами – удобный визуальный интерфейс MySQL.
Требования
Для выполнения инструкций данного руководства необходимы root-привилегии. Чтобы получить их, читайте разделы 3 и 4 данного руководства.
Прежде чем приступить к инсталляции phpMyAdmin, необходимо установить LAMP stack. Чтобы получить инструкции по установке Linux, Apache, MySQL, PHP на сервер Ubuntu, прочтите данное руководство.
Получив root-привилегии и все необходимое программное обеспечение, приступайте к установке phpMyAdmin.
Установка phpMyAdmin
Использование команды apt-get – самый простой способ установки phpMyAdmin.
sudo apt-get install phpmyadmin
Во время установки phpMyAdmin можно выполнить его базовую настройку. Когда процесс установки запущен, нужно:
- Выбрать Apache2 в качестве веб-сервера;
- Ответить YES на вопрос, настроить ли базу данных для phpmyadmin с помощью dbconfig-common;
- Ввести пароль администратора MySQL;
- Установить пароль для входа в phpmyadmin.
По завершении установки внесите phpMyAdmin в конфигурации Apache.
sudo nano /etc/apache2/apache2.conf
Внесите конфигурационный файл phpMyAdmin в файл:
Include /etc/phpmyadmin/apache.conf
Перезапустите Apache:
sudo service apache2 restart
Теперь можно открыть phpMyAdmin, введя ipадрес/phpmyadmin, что выведет страницу приветствия phpMyAdmin.
Защита phpMyAdmin
К сожалению, старые версии PhpMyAdmin имели серьезные уязвимости в системе безопасности, что позволяло удаленным пользователям использовать root виртуального выделенного сервера. Теперь большинство подобных атак можно предотвратить, выполнив простое действие – заблокировав каталог, содержащий ограничения пользователей/паролей Apache (это не позволит удаленному пользователю даже попытаться использовать старые версии PhpMyAdmin).
Файл .htaccess
Для начала необходимо разрешить файлу .htaccess работать в каталоге phpmyadmin. Это можно сделать в конфигурационном файле phpmyadmin:
sudo nano /etc/phpmyadmin/apache.conf
В разделе каталога /usr/share/phpmyadmin под параметром Directory Index внесите AllowOverride All; теперь раздел выглядит так:
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
[...]
Настройка файла .htaccess
Теперь нужно создать пользователя, без данных которого невозможно будет даже открыть страницу входа в phpMyAdmin.
Для начала создайте страницу .htaccess в каталоге phpmyadmin:
sudo nano /usr/share/phpmyadmin/.htaccess
Затем настройте авторизацию пользователя в файле .htaccess. Скопируйте и вставьте следующий текст:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /путь/к/паролям/.htpasswd
Require valid-user
Вот описание каждой строки данного блока кода:
- AuthType: ссылается на тип авторизации, который будет использован для проверки паролей. На данный момент пароли проверяются через HTTP, потому переменную Basic менять не нужно.
- AuthName: содержит текст, который будет отображаться в запросе ввести пароль. Сюда можно внести текст на свое усмотрение.
- AuthUserFile: Эта строка определяет путь на сервере к файлу паролей (который будет создан в следующем подразделе).
- Require valid-user: эта строка говорит файлу .htaccess, что только пользователи, указанные в файле паролей, могут получать доступ к странице входа в phpMyAdmin.
Создание файла .htpasswd
Теперь можно перейти к созданию файла .htpasswd, который будет содержать информацию о пользователях, имеющих доступ к phpMyAdmin. Используйте команду htpasswd и поместите файл в любую директорию (поскольку он недоступен в браузере). По договоренности этот файл называется .htpasswd (хотя назвать его можно как угодно).
sudo htpasswd -c /путь/к/паролям/.htpasswd имя_пользователя
Извещение запросит ввести и подтвердить пароль. После того, как пары “имя пользователя/пароль” сохранены, пароль будет хранится в файле в зашифрованном виде.
В завершение перезагрузите Apache:
sudo service apache2 restart
Теперь phpMyAdmin имеет более высокий уровень защиты, поскольку только авторизованные пользователи имеют возможность открыть страницу входа.