MySQL і MariaDB: встановлення та ваша перша база даних
Встановлення сервера баз даних на VDS, безпечне початкове налаштування, створення бази даних і користувача, перевірка з'єднання та типові перші помилки.
Оновлено 23 серпня 2026 р.
MySQL та його сумісне відгалуження MariaDB — це те, на чому працює більшість PHP-сайтів. Їхні команди й клієнт однакові; відмінності починаються на тонкому налаштуванні.
Встановлення
apt update && apt install -y mariadb-server # Debian, Ubuntu
dnf install -y mariadb-server # AlmaLinux, CentOS Stream
systemctl enable --now mariadb
Якщо вам потрібен саме Oracle MySQL, встановіть mysql-server з його офіційного репозиторію. Служба називатиметься mysql.
Одразу закрийте базові дірки:
mariadb-secure-installation
Скрипт попросить задати пароль root, видалити анонімних користувачів, заборонити віддалений вхід root і видалити тестову базу даних. Відповідайте «так» на все.
База даних і користувач
Не запускайте застосунок від імені root — створіть окремого користувача для кожного проєкту:
CREATE DATABASE shop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'shop'@'localhost' IDENTIFIED BY 'long-random-password';
GRANT ALL PRIVILEGES ON shop.* TO 'shop'@'localhost';
FLUSH PRIVILEGES;
Кодування utf8mb4 обов'язкове: старий utf8 у MySQL зберігає лише три байти на символ і ламається на емодзі та деяких символах.
Перевірте:
mariadb -u shop -p shop -e "SELECT 1;"
Докладніше про права доступу — у розділі користувачі та привілеї.
Початкове налаштування
Налаштування містяться у /etc/mysql/mariadb.conf.d/50-server.cnf або /etc/my.cnf.d/. Ось мінімум, який варто виправити одразу:
[mysqld]
bind-address = 127.0.0.1
innodb_buffer_pool_size = 1G
max_connections = 100
bind-address = 127.0.0.1 залишає базу даних доступною лише локально. Якщо ваш застосунок на тій самій машині, так і має бути. Якщо вам потрібен доступ до бази даних ззовні, прочитайте віддалений доступ, перш ніж щось змінювати.
Розмір буферного пулу обирається за тарифом — дивіть налаштування пам'яті.
Після редагування: systemctl restart mariadb.
Типові помилки
| Симптом | Причина | Що робити |
|---|---|---|
Access denied for user | Неправильний пароль або запис користувача прив'язаний до іншого хоста | Перевірте SELECT user, host FROM mysql.user; |
Can't connect through socket | Служба не запущена | systemctl status mariadb, перегляньте journalctl -u mariadb |
Too many connections | Застосунок не закриває з'єднання | Пул на боці застосунку, потім max_connections |
| Кривий текст | Різні кодування для бази даних і з'єднання | Приведіть усе до utf8mb4 |
| База даних не запускається після перезавантаження | Служба не налаштована на запуск під час завантаження | systemctl enable mariadb |
Автоматичних резервних копій машини немає. Налаштуйте дамп одразу після першої робочої таблиці — резервні копії бази даних. Диск NVMe швидкий, але він лише один.