Коротка відповідь
- Шлях у панелі: Account Manager → MySQL Management → Create new Database.
- Панель допише до імені префікс акаунта: ввели
blog- база називатиметьсялогін_blog. У конфіг CMS пишіть повне ім'я. - Хост бази -
localhost. Не IP сервера і не домен: MySQL на моїх серверах слухає тільки локальний інтерфейс. - Для кожного сайту - своя база і свій користувач. Одна пара на всі сайти означає, що злам одного відкриває решту.
- Дамп заливається через phpMyAdmin, вхід у нього з панелі - одним кліком, без окремого пароля.
Крок 0. Що саме ви створюєте
У MySQL (на серверах Hosturm це MariaDB 10.11) база і користувач - два різні об'єкти. База - це набір таблиць. Користувач - це логін із паролем, якому дозволено щось робити з конкретною базою. Одного користувача можна підключити до кількох баз, до однієї бази - кількох користувачів. DirectAdmin за замовчуванням створює їх парою, і для типового сайту цього досить.
Будь-якій CMS потрібні чотири значення. Ось де вони лежать у найпоширеніших системах:
| CMS | Файл | Ім'я бази | Користувач і пароль | Хост |
|---|---|---|---|---|
| WordPress | wp-config.php | DB_NAME | DB_USER, DB_PASSWORD | DB_HOST |
| OpenCart | config.php і admin/config.php | DB_DATABASE | DB_USERNAME, DB_PASSWORD | DB_HOSTNAME |
| PrestaShop 1.7+ | app/config/parameters.php | database_name | database_user, database_password | database_host |
| Laravel | .env | DB_DATABASE | DB_USERNAME, DB_PASSWORD | DB_HOST |
В OpenCart файлів конфігурації два. Поправили тільки кореневий - вітрина відкривається, а адмінка пише про помилку підключення. Це найчастіший «загадковий» випадок після переїзду магазину.
Крок 1. Перевірити, скільки баз дозволяє тариф
Кількість баз - окремий ліміт тарифу, і він закінчується раніше, ніж здається: тестова копія сайту, стара версія «про всяк випадок», база під форум - і п'ять слотів зайняті. Поточні ліміти з тарифів на головній:
| Тариф | Ціна | Сайти | Бази MySQL | Диск NVMe |
|---|---|---|---|---|
| Старт | 142 грн/міс | 1 | 5 | 10 GB |
| Оптимал | 229 грн/міс | 3 | 10 | 20 GB |
| Бізнес | 350 грн/міс | 5 | 20 | 30 GB |
| Pro | 800 грн/міс | 10 | без обмежень | 100 GB |
Ціни вказані за річної оплати; помісячна оплата дорожча, повний розклад - на сторінці хостингу. Скільки баз уже зайнято, видно на стартовій сторінці панелі в блоці статистики акаунта. Уперлися в ліміт - спершу видаліть непотрібні бази, а не підключайте новий сайт до чужої.
Крок 2. Створити базу в MySQL Management
- Увійдіть у DirectAdmin (адреса з порту 2222 приходить у листі після замовлення).
- Відкрийте Account Manager → MySQL Management і натисніть Create new Database.
- Заповніть ім'я бази. Коротко і латиницею:
shop,blog,crm. Пробіли, кирилиця й дефіси тут зайві. - Ім'я користувача можна лишити таким самим, як у бази, - для одного сайту так навіть зручніше.
- Пароль згенеруйте кнопкою поруч із полем, а не вигадуйте. Його не треба пам'ятати, він живе в конфігу CMS.
- Збережіть. Панель покаже підсумок з повними іменами - скопіюйте їх одразу в менеджер паролів.
Звідки береться префікс
На одному сервері живуть десятки акаунтів, і назву 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. Змінити пароль бази, не поклавши сайт
Пароль бази варто міняти після кожного підрядника, який бачив конфіг, і після будь-якої підозри на злам. Проблема в тому, що з моменту зміни пароля в панелі й до оновлення конфігу сайт віддає помилку. Порядок, який тримає це вікно в межах хвилини:
- Відкрийте конфіг CMS у File Manager у режимі редагування, але поки не зберігайте.
- У другій вкладці: MySQL Management → база → користувач → Change Password, згенеруйте новий пароль і скопіюйте його.
- Збережіть пароль у панелі, одразу вставте його в конфіг і збережіть конфіг.
- Оновіть сайт і адмінку.
Якщо конфіг лежить не в одному місці (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. Кількість баз, диск і все інше, що входить у кожен план, - на сторінці хостингу.