Skip to content
VDS · Бази даних

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 швидкий, але він лише один.