- PHP, Apache
Предварительно необходимо установить php-cli (например, php7.3-cli), php-fpm. Также, ставим некоторые php-модули, apache2 и модуль libapache2-mod-php7.3
sudo apt-get install php7.3-cli sudo apt-get install php7.3-fpm sudo apt-get install php7.3-mbstring sudo apt-get install php7.3-zip sudo apt-get install php7.3-gd sudo apt-get install php7.3-mysqli sudo apt-get install apache2 sudo apt-get install libapache2-mod-php7.3 sudo a2enconf php7.3-fpm.conf
- Установка
Идем сюда и ищем самую последнюю версию phpmyadmin. На момент написания статьи это файл phpMyAdmin-5.0.2-all-languages.zip. Скачиваем, распаковываем:# wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.zip # unzip phpMyAdmin-5.0.2-all-languages.zip
Создаем директорию /usr/share/phpmyadmin и копируем туда содержимое директории phpMyAdmin-5.0.2-all-languages.
- Настраиваем
PHPMyAdmin
Создаем директорию для временных файлов:# mkdir -p /var/lib/phpmyadmin/tmp # chown -R www-data:www-data /var/lib/phpmyadmin
Файл конфигурации:# cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
Редактируем файл /usr/share/phpmyadmin/config.inc.php
- ищем строку $cfg['blowfish_secret'] и вписываем пароль из ровно 32-х символов. Меньше 32-х - слабее защита, больше 32-х - на уровень защиты не влияет.
- раскомментируем строки:$cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Servers'][$i]['controlpass'] = 'pmapass';
вместо pmapass задаем пароль.
- ищем блок с настройками, начинающийся с комментария:/* Storage database and tables */
и раскомментируем всё до следующего комментария:$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; $cfg['Servers'][$i]['relation'] = 'pma__relation'; $cfg['Servers'][$i]['table_info'] = 'pma__table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma__column_info'; $cfg['Servers'][$i]['history'] = 'pma__history'; $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs'; $cfg['Servers'][$i]['tracking'] = 'pma__tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig'; $cfg['Servers'][$i]['recent'] = 'pma__recent'; $cfg['Servers'][$i]['favorite'] = 'pma__favorite'; $cfg['Servers'][$i]['users'] = 'pma__users'; $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups'; $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding'; $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches'; $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns'; $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings'; $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
- в конец файла дописываем:$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
MySQL
- создаем пользователя pma с паролем, который задали в config.inc.php:GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
Apache
- создаем файл /etc/apache2/conf-available/phpmyadmin.conf с следующим содержимым:# phpMyAdmin Apache configuration Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options SymLinksIfOwnerMatch DirectoryIndex index.php </Directory> # Disallow web access to directories that don't need it <Directory /usr/share/phpmyadmin/templates> Require all denied </Directory> <Directory /usr/share/phpmyadmin/libraries> Require all denied </Directory> <Directory /usr/share/phpmyadmin/setup/lib> Require all denied </Directory>
- разрешаем его использование:$ sudo a2enconf phpmyadmin.conf $ sudo systemctl restart apache2
Проверяем
http://IP-ADDRESS/phpmyadmin
- Что дальше?
Посмотрев через некоторое время логи web-сервера, вы удивитесь, сколько добрых людей хотят поработать с вашим phpmyadmin, а так как пароль им никто не давал, они натравливают на админку брутфорсеров или пытаются использовать известные уязвимости. Специально для таких добрых людей неплохо сделать дополнительную httpAuth аутентификацию. Единственный её минус - придется ввести не один пароль, а два, сначала для web-сервера, потом для phpmyadmin. Но оно того стоит.
Уже мало кто использует apache в качестве основного web-сервера, обычно все сидят на nginx, но phpmyadmin работает только через apache (или я чего то не знаю). При таком варианте, apache задают использовать порты 80 и 433 только на localhost, а nginx настраивают на работу на внешних ip. Для location /phpmyadmin на nginx настраивают аутентификацию и проксирование запросов на apache.location /phpmyadmin { auth_basic "Skazhi parol"; auth_basic_user_file /etc/nginx/phpmyadmin.htpasswd; proxy_pass http://127.0.0.1:80; include proxy_params; }
Статья опубликована: 2020-04-10 11:32:37
Последние правки: 2020-04-11 01:17:37
В репозиториях Debian 10 нет PHPMyAdmin, поэтому будем устанавливать с сайта разработчиков.