1. Блог
  2. Мануали

Adminer: встановлення та безпечна робота з базами даних

Adminer: встановлення та безпечна робота з базами даних

Adminer — інструмент для керування базами даних через браузер. На відміну від phpMyAdmin, він складається з одного PHP-файлу, не потребує налаштування й працює не лише з MySQL і MariaDB, а й з PostgreSQL, SQLite, MS SQL та іншими СУБД.

Що вміє Adminer

  • створювати, змінювати й видаляти бази даних, таблиці, індекси та зовнішні ключі;
  • виконувати довільні SQL-запити;
  • імпортувати й експортувати дані в SQL і CSV;
  • керувати користувачами та правами;
  • показувати список процесів і змінні сервера.

Встановлення на сервер із PHP

Потрібен робочий вебсервер із PHP — наприклад, стек LEMP.

Створіть окремий каталог і завантажте файл. Номер версії уточніть на сторінці релізів проєкту на GitHub (vrana/adminer):

sudo mkdir -p /var/www/adminer
sudo wget -O /var/www/adminer/index.php https://github.com/vrana/adminer/releases/download/v6.3.0/adminer-6.3.0.php

На цьому встановлення закінчено. Залишилося зробити каталог доступним через вебсервер — і обов’язково закрити його від сторонніх.

Захист доступу

Adminer дає повний доступ до баз даних, тому залишати його відкритим для всього інтернету не можна. Боти постійно шукають файли adminer.php на серверах.

Приклад конфігурації Nginx із двома рівнями захисту — обмеженням за IP-адресою та додатковим паролем:

server {
    listen 80;
    server_name db.example.com;

    root /var/www/adminer;
    index index.php;

    allow 198.51.100.7;
    deny all;

    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }
}

Підставте свою IP-адресу та версію PHP. Створіть файл із паролем:

sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd admin

Перевірте конфігурацію та застосуйте її:

sudo nginx -t && sudo systemctl reload nginx

Потім випустіть SSL-сертифікат: без HTTPS паролі від баз даних передаються у відкритому вигляді.

sudo certbot --nginx -d db.example.com

Встановлення в Docker

Якщо бази даних працюють у контейнерах, простіше запустити Adminer поруч:

services:
  adminer:
    image: adminer
    restart: unless-stopped
    ports:
      - "127.0.0.1:8080:8080"
docker compose up -d

Порт опубліковано лише на локальній адресі, тому ззовні Adminer недоступний.

Доступ через SSH-тунель

Найбезпечніший варіант — узагалі не публікувати Adminer. Прокиньте порт на свій комп’ютер:

ssh -L 8080:127.0.0.1:8080 root@203.0.113.10

Поки з’єднання відкрите, Adminer доступний у браузері за адресою http://localhost:8080.

Вхід

На сторінці входу вкажіть:

  • Система — тип СУБД: MySQL, PostgreSQL тощо;
  • Сервер — localhost або ім’я контейнера з базою даних, якщо Adminer запущено в Docker;
  • Ім’я користувача та пароль бази даних;
  • База даних — можна залишити порожнім, щоб побачити всі доступні.

Вхід без пароля Adminer не допускає. В Ubuntu користувач root у MySQL типово не має пароля й входить через сокет, тому створіть для роботи окремого користувача з паролем.

Корисні прийоми

  • Експорт. Кнопка Експорт у лівій колонці створює дамп бази або окремих таблиць. Для великих баз надійніший mysqldump із консолі.
  • Імпорт. Розмір файлу, що завантажується, обмежений параметрами PHP upload_max_filesize і post_max_size.
  • Пошук в усіх таблицях. На сторінці бази даних є поле пошуку за вмістом усіх таблиць одразу.

Adminer чи phpMyAdmin

Adminer phpMyAdmin
Встановлення один файл каталог із налаштуванням
Підтримка СУБД MySQL, PostgreSQL, SQLite та інші MySQL і MariaDB
Інтерфейс мінімалістичний докладніший

Adminer зручний, коли потрібно швидко зазирнути в базу на сервері й не хочеться підтримувати ще один застосунок.

#adminer#mysql#postgresql#бази даних#phpmyadmin

Ця стаття іншими мовами:EnglishРусский