Коротка відповідь

  • Шлях у панелі: Account Manager → MySQL Management → Create new Database.
  • Панель допише до імені префікс акаунта: ввели blog - база називатиметься логін_blog. У конфіг CMS пишіть повне ім'я.
  • Хост бази - localhost. Не IP сервера і не домен: MySQL на моїх серверах слухає тільки локальний інтерфейс.
  • Для кожного сайту - своя база і свій користувач. Одна пара на всі сайти означає, що злам одного відкриває решту.
  • Дамп заливається через phpMyAdmin, вхід у нього з панелі - одним кліком, без окремого пароля.

Крок 0. Що саме ви створюєте

У MySQL (на серверах Hosturm це MariaDB 10.11) база і користувач - два різні об'єкти. База - це набір таблиць. Користувач - це логін із паролем, якому дозволено щось робити з конкретною базою. Одного користувача можна підключити до кількох баз, до однієї бази - кількох користувачів. DirectAdmin за замовчуванням створює їх парою, і для типового сайту цього досить.

Будь-якій CMS потрібні чотири значення. Ось де вони лежать у найпоширеніших системах:

CMSФайлІм'я базиКористувач і парольХост
WordPresswp-config.phpDB_NAMEDB_USER, DB_PASSWORDDB_HOST
OpenCartconfig.php і admin/config.phpDB_DATABASEDB_USERNAME, DB_PASSWORDDB_HOSTNAME
PrestaShop 1.7+app/config/parameters.phpdatabase_namedatabase_user, database_passworddatabase_host
Laravel.envDB_DATABASEDB_USERNAME, DB_PASSWORDDB_HOST

В OpenCart файлів конфігурації два. Поправили тільки кореневий - вітрина відкривається, а адмінка пише про помилку підключення. Це найчастіший «загадковий» випадок після переїзду магазину.

Крок 1. Перевірити, скільки баз дозволяє тариф

Кількість баз - окремий ліміт тарифу, і він закінчується раніше, ніж здається: тестова копія сайту, стара версія «про всяк випадок», база під форум - і п'ять слотів зайняті. Поточні ліміти з тарифів на головній:

ТарифЦінаСайтиБази MySQLДиск NVMe
Старт142 грн/міс1510 GB
Оптимал229 грн/міс31020 GB
Бізнес350 грн/міс52030 GB
Pro800 грн/міс10без обмежень100 GB

Ціни вказані за річної оплати; помісячна оплата дорожча, повний розклад - на сторінці хостингу. Скільки баз уже зайнято, видно на стартовій сторінці панелі в блоці статистики акаунта. Уперлися в ліміт - спершу видаліть непотрібні бази, а не підключайте новий сайт до чужої.

Крок 2. Створити базу в MySQL Management

  1. Увійдіть у DirectAdmin (адреса з порту 2222 приходить у листі після замовлення).
  2. Відкрийте Account Manager → MySQL Management і натисніть Create new Database.
  3. Заповніть ім'я бази. Коротко і латиницею: shop, blog, crm. Пробіли, кирилиця й дефіси тут зайві.
  4. Ім'я користувача можна лишити таким самим, як у бази, - для одного сайту так навіть зручніше.
  5. Пароль згенеруйте кнопкою поруч із полем, а не вигадуйте. Його не треба пам'ятати, він живе в конфігу CMS.
  6. Збережіть. Панель покаже підсумок з повними іменами - скопіюйте їх одразу в менеджер паролів.

Звідки береться префікс

На одному сервері живуть десятки акаунтів, і назву shop захочуть щонайменше троє. Тому DirectAdmin додає до імені вашого логіна підкреслення: акаунт ivan + база shop = ivan_shop. Той самий префікс отримує користувач. Прибрати його не можна, і прописувати в конфіг треба саме повну назву - коротка дасть помилку «Unknown database».

Кодування

Нові бази на сервері створюються в utf8mb4. Це правильний вибір і для української, і для емодзі в коментарях. Міняти його руками не потрібно; проблеми з кодуванням виникають лише при імпорті старих дампів у cp1251, про це нижче.

Крок 3. Окремий користувач і його права

Пари, яку створила панель, досить для одного сайту. Окремий користувач потрібен у двох випадках: доступ для підрядника, якого ви не хочете пускати в основний логін, і сервіс, який має тільки читати дані - наприклад, вивантаження звітів.

Додати користувача до наявної бази

У списку MySQL Management натисніть на ім'я бази. Відкриється сторінка з її користувачами: там є Create new user (новий логін одразу з доступом до цієї бази) і Add existing user (підключити логін, який уже працює з іншою базою). Другий варіант зручний, коли один скрипт працює з двома базами, але для двох незалежних сайтів його не використовуйте.

Які права давати

Біля кожного користувача є Modify Privileges - галочки на операції. Для самої CMS лишайте всі: оновлення WordPress чи модулів OpenCart змінюють структуру таблиць, і без ALTER та CREATE оновлення впаде посередині, залишивши базу в половинчастому стані. Для звітів чи аналітики - тільки SELECT. Підряднику, який закінчив роботу, доступ не «урізайте», а видаляйте користувача повністю.

Крок 4. Залити дамп через phpMyAdmin

Порожня база потрібна лише для чистої установки CMS - інсталятор сам створить таблиці. Якщо ви переносите готовий сайт, у базу треба імпортувати дамп.

Вхід без пароля

У MySQL Management є посилання на phpMyAdmin. На серверах Hosturm увімкнено вхід одним кліком: панель сама авторизує вас під вашим акаунтом і показує всі ваші бази. Логін і пароль конкретного користувача вводити не треба.

Імпорт

Зліва оберіть базу (саме ту, з префіксом), вкладка Імпорт, виберіть файл .sql або .sql.gz і натисніть Імпорт. Архів розпаковувати не потрібно. Поруч із кнопкою вибору файлу phpMyAdmin пише максимальний розмір, який прийме, - перевірте його до того, як чекати завантаження. Більший дамп не ріжте вручну на шматки: розрізаний посеред запиту INSERT файл дає базу з пропущеними рядками, і помітите ви це через тиждень. Такий дамп простіше передати мені - напишіть у Telegram, заллю з консолі сервера. Повну послідовність переїзду з вивантаженням на старому хостингу я розібрав у статті про перенесення WordPress.

Крок 5. Прописати доступи і перевірити підключення

Відкрийте конфіг CMS у File Manager (System Info & Files → File Manager, тека domains/ваш-домен/public_html) і впишіть чотири значення з кроку 0. Хост - localhost.

Тут чесне обмеження: віддаленого підключення до MySQL на шаред-тарифах немає. Порт 3306 слухає тільки локальний інтерфейс сервера, тож DBeaver чи HeidiSQL з вашого комп'ютера не під'єднаються, навіть якщо додати свій IP у Access Hosts - таблиця доступів тут нічого не відкриє. Це свідомий захист: відкритий назовні MySQL - постійна ціль для перебору паролів. Для роботи з даними використовуйте phpMyAdmin. Потрібен прямий доступ до бази для зовнішнього сервісу - це вже сценарій для VPS, різницю я розбирав у статті шаред, VPS чи виділений сервер.

Перевірка проста: відкрийте сайт і адмінку. Обидва завантажились - підключення правильне. Для OpenCart перевірте обидва окремо, з причини, описаної в кроці 0.

Крок 6. Змінити пароль бази, не поклавши сайт

Пароль бази варто міняти після кожного підрядника, який бачив конфіг, і після будь-якої підозри на злам. Проблема в тому, що з моменту зміни пароля в панелі й до оновлення конфігу сайт віддає помилку. Порядок, який тримає це вікно в межах хвилини:

  1. Відкрийте конфіг CMS у File Manager у режимі редагування, але поки не зберігайте.
  2. У другій вкладці: MySQL Management → база → користувач → Change Password, згенеруйте новий пароль і скопіюйте його.
  3. Збережіть пароль у панелі, одразу вставте його в конфіг і збережіть конфіг.
  4. Оновіть сайт і адмінку.

Якщо конфіг лежить не в одному місці (OpenCart, самописні скрипти з окремим db.php), знайдіть усі файли заздалегідь, до зміни пароля.

Якщо щось не працює

Повідомлення MySQL зазвичай точно називає проблему, якщо знати, як його читати:

ПомилкаЩо означаєЩо робити
1045 Access denied for userнеправильний пароль або ім'я без префіксазвірити логін із панеллю, за потреби змінити пароль
1044 Access denied ... to databaseкористувач існує, але не підключений до цієї базиAdd existing user на сторінці бази
1049 Unknown databaseу конфігу коротке ім'я базивписати повне, з префіксом акаунта
2002 Connection refusedхост указано як IP або доменпоставити localhost
1062 Duplicate entry під час імпортудамп заливається в базу, де вже є таблицівидалити таблиці і повторити імпорт
MySQL server has gone awayодин запит у дампі більший за 128 MB (max_allowed_packet)передати дамп у підтримку для заливки з консолі
«Кракозябри» замість текстустарий дамп у cp1251 імпортовано як utf8mb4при імпорті вказати кодування файлу cp1251

Помилки немає в таблиці або сайт після імпорту працює, але частина даних зникла - пишіть мені з текстом помилки і назвою бази, подивлюся в логах сервера. І перед будь-якими експериментами з наявною базою натисніть у MySQL Management Download біля неї: це свіжий дамп у вас на комп'ютері, на додачу до щоденних бекапів, які сервер зберігає поза собою.

Коротко

  • MySQL Management → Create new Database, ім'я латиницею, пароль із генератора.
  • У конфіг - повні імена з префіксом акаунта, хост localhost.
  • Один сайт - одна база й один користувач; підряднику - окремий логін, який ви потім видаляєте.
  • Для CMS усі права, для звітів тільки SELECT.
  • Дамп - через phpMyAdmin, великий - через підтримку, без ручного різання.
  • Зовнішнього доступу до MySQL на шаред-тарифах немає, для цього потрібен VPS.

Якщо ви тільки налаштовуєте акаунт, почніть зі статті DirectAdmin: перші кроки після замовлення - там порядок від додавання домену до SSL. Кількість баз, диск і все інше, що входить у кожен план, - на сторінці хостингу.