Як встановити та захистити phpMyAdmin на Ubuntu (Повний посібник)
phpMyAdmin — один із найбільш широко використовуваних інструментів з відкритим кодом для управління базами даних MySQL і MariaDB через веб-інтерфейс. Незалежно від того, чи ви розробник, системний адміністратор чи власник веб-сайту, він значно спрощує складні операції з базами даних — від виконання SQL-запитів до імпорту/експорту даних — без необхідності знання командного рядка.
Однак, оскільки phpMyAdmin за замовчуванням доступний через публічну URL-адресу, залишення його незахищеним — серйозний ризик. Цей комплексний посібник проведе вас через встановлення phpMyAdmin на Ubuntu 20.04/22.04, його налаштування за допомогою Apache та посилення безпеки від несанкціонованого доступу за допомогою кількох рівнів захисту.
Зміст
- Передумови
- Крок 1 — Оновлення системи та індексу пакетів
- Крок 2 — Встановлення phpMyAdmin
- Крок 3 — Налаштування Apache для phpMyAdmin
- Крок 4 — Захист phpMyAdmin за допомогою HTTP Basic Authentication
- Крок 5 — Обмеження доступу за IP-адресою (необов’язково, але рекомендується)
- Крок 6 — Включення SSL для шифрування трафіку
- Крок 7 — Доступ до phpMyAdmin
- Усунення неполадок із поширеними проблемами
- Висновок
Передумови {#prerequisites}
Перш ніж розпочати, переконайтеся, що виконані такі вимоги:
- Сервер, на якому працює Ubuntu 20.04 або 22.04 (фізичний або віртуальний)
- MySQL або MariaDB встановлені та активно працюють
- Встановлений веб-сервер Apache2
- Обліковий запис користувача з привілеями sudo
- Доменне ім’я або статична IP-адреса, яка вказує на ваш сервер
- (Рекомендується) Дійсний SSL-сертифікат для зашифрованого доступу HTTPS
> Порада: Якщо у вас ще немає серверного середовища, розгляньте AlexHost VPS Hosting — повністю керовані або некеровані плани Linux VPS з миттєвою підготовкою, root-доступом та SSD-сховищем, ідеальні для безпечного запуску phpMyAdmin.
Крок 1 — Оновлення системи та індексу пакетів {#step-1}
Завжди починайте з оновлення списків пакетів та застосування будь-яких очікуючих оновлень системи. Це гарантує, що ви встановите найновішу доступну версію phpMyAdmin та уникнете конфліктів залежностей.
sudo apt update && sudo apt upgrade -yКрок 2 — Встановлення phpMyAdmin {#step-2}
Встановіть phpMyAdmin за допомогою офіційного репозиторію Ubuntu APT:
sudo apt install phpmyadmin -yПід час встановлення з’явиться інтерактивний майстер конфігурації. Уважно виконайте такі кроки:
2.1 — Вибір веб-сервера
Вам буде запропоновано вибрати веб-сервер для автоматичного налаштування:
Please choose the web server that should be automatically configured to run phpMyAdmin.
[*] apache2
[ ] lighttpdВикористовуйте пробіл для вибору apache2, потім натисніть Tab для виділення <Ok> та натисніть Enter.
2.2 — Налаштування бази даних за допомогою dbconfig-common
Далі вас запитають, чи потрібно налаштувати базу даних для phpMyAdmin за допомогою dbconfig-common:
Configure database for phpmyadmin with dbconfig-common?Виберіть Так. Потім вам буде запропоновано ввести пароль MySQL-додатка для внутрішнього користувача бази даних phpMyAdmin. Введіть надійний пароль або залиште поле порожнім, щоб він був згенерований автоматично.
2.3 — Перевірка встановлення
Після завершення встановлення підтвердьте, що phpMyAdmin встановлено:
dpkg -l phpmyadminВи повинні побачити рядок, що показує встановлену версію пакета.
Крок 3 — Налаштування Apache для phpMyAdmin {#step-3}
У деяких конфігураціях Ubuntu файл конфігурації Apache для phpMyAdmin не включається автоматично. Перевірте та включіть його вручну.
3.1 — Включення конфігурації phpMyAdmin
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin3.2 — Перевірка файлу конфігурації
Відкрийте файл конфігурації для перегляду його вмісту:
sudo nano /etc/apache2/conf-available/phpmyadmin.confФайл повинен містити такі директиви (або подібні):
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options Indexes FollowSymLinks
DirectoryIndex index.php
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require all granted
</RequireAny>
</IfModule>
</Directory>
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require all granted
</RequireAny>
</IfModule>
</Directory>Збережіть та закрийте файл за допомогою CTRL+X, потім Y, потім Enter.
3.3 — Перезавантаження Apache
Застосуйте зміни конфігурації:
sudo systemctl restart apache2Перевірте, що Apache працює без помилок:
sudo systemctl status apache2Крок 4 — Захист phpMyAdmin за допомогою HTTP Basic Authentication {#step-4}
За замовчуванням будь-хто, хто знає IP-адресу вашого сервера, може отримати доступ до сторінки входу phpMyAdmin. Додавання рівня HTTP Basic Authentication створює другі ворота паролю перед тим, як користувачі побачать форму входу phpMyAdmin.
4.1 — Встановлення apache2-utils
sudo apt install apache2-utils -y4.2 — Створення файлу паролю та користувача
Створіть файл .htpasswd та додайте свого першого адміністративного користувача. Замініть your_admin_user на ваше обране ім’я користувача:
sudo mkdir -p /etc/phpmyadmin
sudo htpasswd -c /etc/phpmyadmin/.htpasswd your_admin_userВам буде запропоновано ввести та підтвердити пароль. Щоб додати додаткових користувачів пізніше (без прапора -c, який перезапише файл):
sudo htpasswd /etc/phpmyadmin/.htpasswd another_user4.3 — Оновлення конфігурації Apache для phpMyAdmin
Відредагуйте файл конфігурації phpMyAdmin, щоб забезпечити автентифікацію:
sudo nano /etc/apache2/conf-available/phpmyadmin.confЗнайдіть блок <Directory /usr/share/phpmyadmin> та додайте всередину нього такі рядки:
<Directory /usr/share/phpmyadmin>
Options Indexes FollowSymLinks
DirectoryIndex index.php
# HTTP Basic Authentication
AuthType Basic
AuthName "Restricted Access — Authorized Personnel Only"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
<IfModule mod_authz_core.c>
<RequireAny>
Require valid-user
</RequireAny>
</IfModule>
</Directory>Збережіть та закрийте файл.
4.4 — Перезавантаження Apache
sudo systemctl restart apache2Тепер перехід до /phpmyadmin спочатку запропонує облікові дані HTTP-автентифікації перед відображенням сторінки входу phpMyAdmin.
Крок 5 — Обмеження доступу за IP-адресою (необов’язково, але рекомендується) {#step-5}
Для ще більш надійного захисту обмежте доступ до phpMyAdmin лише для конкретних довірених IP-адрес. Це особливо корисно, якщо ви завжди отримуєте доступ до свого сервера з фіксованої IP-адреси (наприклад, мережа офісу або VPN).
Відредагуйте конфігурацію Apache для phpMyAdmin:
sudo nano /etc/apache2/conf-available/phpmyadmin.confЗмініть блок <Directory> так, щоб він включав обмеження на основі IP:
<Directory /usr/share/phpmyadmin>
Options Indexes FollowSymLinks
DirectoryIndex index.php
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /etc/phpmyadmin/.htpasswd
<RequireAll>
Require valid-user
Require ip 203.0.113.50
# Add more trusted IPs below:
# Require ip 198.51.100.0/24
</RequireAll>
</Directory>Замініть 203.0.113.50 на вашу фактичну довірену IP-адресу або підмережу. Збережіть файл та перезавантажте Apache:
sudo systemctl restart apache2> Примітка: Якщо ваша IP-адреса часто змінюється, розгляньте використання VPN зі статичною IP-адресою або покладайтеся лише на HTTP Basic Authentication у поєднанні з SSL.
Крок 6 — Включення SSL для шифрування трафіку {#step-6}
Передача облікових даних бази даних через звичайний HTTP — це критичний ризик безпеки. Ви завжди повинні отримувати доступ до phpMyAdmin через HTTPS. Існує два основних підходи:
Варіант A — Використання SSL-сертифіката Let’s Encrypt (безплатно)
Якщо у вас є доменне ім’я, яке вказує на ваш сервер, встановіть Certbot:
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d yourdomain.comCertbot автоматично налаштує Apache для перенаправлення HTTP на HTTPS та встановить безплатний сертифікат з автоматичним поновленням.
Варіант B — Використання комерційного SSL-сертифіката
Для виробничих середовищ, які обробляють конфіденційні дані, комерційно виданий SSL-сертифікат забезпечує більш надійні сигнали довіри та захист гарантією. Ви можете отримати надійні SSL-сертифікати безпосередньо від AlexHost SSL Certificates, з варіантами від Domain Validation (DV) до Extended Validation (EV) сертифікатів.
Після встановлення вашого SSL-сертифіката переконайтеся, що ваша URL-адреса phpMyAdmin використовує https://:
https://yourdomain.com/phpmyadminКрок 7 — Доступ до phpMyAdmin {#step-7}
Після встановлення та застосування заходів безпеки відкрийте браузер та перейдіть на:
https://your_server_ip_or_domain/phpmyadminВи зіткнетеся з двома запитами на автентифікацію послідовно:
- Запит HTTP Basic Authentication — Введіть ім’я користувача та пароль, які ви створили за допомогою
htpasswd - Сторінка входу phpMyAdmin — Введіть ваше ім’я користувача MySQL/MariaDB (наприклад,
root) та його пароль
Після успішного входу ви матимете повний доступ до ваших баз даних MySQL через графічний інтерфейс phpMyAdmin.
Усунення неполадок із поширеними проблемами {#troubleshooting}
phpMyAdmin повертає помилку 404 Not Found
Конфігурація Apache може бути не пов’язана або не включена. Запустіть:
sudo a2enconf phpmyadmin
sudo systemctl reload apache2Також перевірте, що символічне посилання існує:
ls -la /etc/apache2/conf-available/phpmyadmin.confПомилка “Cannot Connect to MySQL Server”
Перевірте, що MySQL/MariaDB працює:
sudo systemctl status mysql
# or for MariaDB:
sudo systemctl status mariadbЯкщо він зупинений, запустіть його:
sudo systemctl start mysqlHTTP 500 Internal Server Error
Це часто вказує на відсутність модуля PHP. Встановіть необхідні розширення PHP:
