База даних потрібна практично будь-якому сайту на CMS: у ній зберігаються матеріали, налаштування, користувачі, зв’язки між об’єктами та службові дані. Створити нову базу MySQL або MariaDB нескладно, але старі інструкції часто радять входити в phpMyAdmin під root без пароля, вибирати utf8_general_ci і «перейменовувати» БД однією кнопкою. Для сучасного сайту такий підхід уже не варто вважати нормою.
Нижче розберемо три актуальні способи створення бази даних — через панель хостингу, phpMyAdmin і SQL, — а потім безпечну схему зміни імені БД без ризику втратити сайт. Інструкція підходить для Joomla, WordPress та інших PHP-застосунків, що працюють із MySQL/MariaDB.
Що потрібно підготувати перед створенням бази даних
Спочатку важливо зрозуміти, де саме працює сайт. На віртуальному хостингу бази зазвичай створюються через ISPmanager, cPanel, Plesk або власну панель провайдера. phpMyAdmin у такій конфігурації призначений насамперед для роботи з уже доступними базами й таблицями. На VPS або локальному сервері можливостей більше, але й відповідальність за права доступу лежить на адміністраторі.
Перед початком роботи корисно записати чотири параметри, які знадобляться застосунку для підключення:
- ім’я бази даних — наприклад,
site_db; - ім’я користувача БД — окремий обліковий запис для сайту;
- пароль користувача — довгий унікальний пароль;
- хост бази даних — найчастіше
localhost, але хостинг може вказати інше значення.
На shared-хостингу провайдер нерідко автоматично додає до імені бази й користувача префікс акаунта. Це нормально: у конфігурацію CMS потрібно записувати саме повне ім’я, яке показує панель.
Три способи створити базу даних
Спосіб 1. Панель хостингу.
Для звичайного сайту це найбезпечніший і найзручніший варіант. Панель сама створює об’єкт бази на сервері, враховує обмеження тарифу та дозволяє пов’язати з нею окремого користувача.
Назви пунктів відрізняються в різних провайдерів, але послідовність зазвичай однакова:
- Відкрийте розділ керування базами даних.
- Створіть нову базу й задайте зрозуміле ім’я латиницею.
- Створіть окремого користувача БД і згенеруйте складний пароль.
- Призначте цьому користувачу права саме на створену базу.
- Збережіть ім’я бази, користувача, пароль і адресу сервера в менеджері паролів або іншому захищеному місці.
Для CMS немає потреби використовувати адміністративний акаунт сервера. Сайт має підключатися під власним обліковим записом, який має права на його базу, а не на всі бази сервера.
Спосіб 2. phpMyAdmin.
Якщо ваш обліковий запис має право CREATE DATABASE, створити базу можна й через phpMyAdmin. У головному вікні відкрийте вкладку «Бази даних» або аналогічний розділ і скористайтеся формою створення нової БД. На деяких хостингах ця можливість прихована — тоді базу потрібно створювати лише через панель провайдера.
Особливу увагу приділіть кодуванню. Стара порада вибирати utf8_general_ci більше не є універсальною. Сучасні MySQL і MariaDB повноцінно працюють із utf8mb4, який підтримує весь діапазон Unicode. Якщо сервер і CMS уже налаштовані правильно, розумніше використовувати рекомендовану хостингом або застосунком utf8mb4-collation, а не змінювати її навмання.
Після створення порожньої бази в неї можна імпортувати дамп наявного сайту або дозволити інсталятору CMS створити таблиці автоматично.
Спосіб 3. SQL.
На власному сервері або в консолі адміністратора ту саму операцію можна виконати SQL-командою. Конкретну collation краще підбирати під установлену версію СУБД і вимоги застосунку, тому в універсальному прикладі достатньо явно вказати utf8mb4:
CREATE DATABASE site_db
CHARACTER SET utf8mb4;Саме створення бази ще не дає сайту права підключатися до неї. Наступним кроком створюють окремого користувача й призначають йому права на site_db.*. Цей процес докладно розібрано в матеріалі «Як створити користувача MySQL/MariaDB і надати права на базу даних».
Чи можна просто перейменувати базу даних
Саме тут старі інструкції найчастіше вводять в оману. У MySQL немає універсальної команди RENAME DATABASE. У деяких версіях і конфігураціях phpMyAdmin інтерфейс міг пропонувати дію, схожу на перейменування, але фактично вона зводилася до створення нової бази, копіювання об’єктів і видалення старої. На shared-хостингу така функція нерідко взагалі недоступна.
Тому безпечне «перейменування» слід сприймати як міграцію на нову базу. Правильна послідовність виглядає так:
- Зробіть свіжий дамп вихідної бази й переконайтеся, що файл резервної копії відкривається.
- Створіть нову базу з потрібним ім’ям.
- Створіть або призначте користувача та права на нову БД.
- Імпортуйте дамп у нову базу.
- Змініть реквізити підключення в конфігурації сайту.
- Перевірте головну сторінку, кілька матеріалів, вхід в адмінку, форми та інші функції, що записують дані в БД.
- Стару базу видаляйте лише після перевірки й додаткової резервної копії.
Така схема трохи довша за «одну кнопку», зате дозволяє швидко відкотитися: поки вихідна база існує, достатньо повернути попередні реквізити підключення.
Що змінити в configuration.php Joomla
Якщо база змінюється в Joomla, редагувати потрібно саме параметри підключення. Важливий момент: $db — це ім’я бази, а $user — ім’я користувача.
public $host = 'localhost';
public $user = 'site_user';
public $password = 'ваш_пароль';
public $db = 'site_db';
public $dbprefix = 'abcde_';Префікс таблиць $dbprefix під час звичайного перенесення бази змінювати не потрібно: він має збігатися з реальними іменами імпортованих таблиць. Перед ручним редагуванням configuration.php збережіть копію файла й не залишайте резервний файл із паролем у публічно доступній папці сайту.
Типові помилки після створення або перенесення бази
Більшість проблем виникає не через саму БД, а через неправильні реквізити або неповний імпорт. Перед пошуком складної причини варто перевірити базові речі:
- у конфігурації вказано повне ім’я бази, а не лише частину без префікса хостинг-акаунта;
- користувача справді призначено новій базі;
- пароль у конфігурації збігається з поточним паролем користувача;
- правильно вказано
localhostабо зовнішній hostname сервера БД; - у новій базі присутні всі таблиці сайту;
- префікс таблиць у Joomla збігається з фактичним;
- імпорт не завершився помилкою через ліміт розміру, часу виконання або несумісну версію.
Якщо сайт повідомляє Access denied, спочатку перевіряйте користувача, пароль, host і права. Якщо з’єднання встановлюється, але CMS не бачить таблиці, перевіряйте ім’я бази та префікс.
Підсумок
Для більшості власників сайтів найкращий шлях — створювати MySQL/MariaDB через панель хостингу, використовувати окремого користувача й utf8mb4, а phpMyAdmin застосовувати для імпорту, експорту та роботи з таблицями. «Перейменування» бази безпечніше виконувати через створення нової БД, перенесення даних і подальше перемикання конфігурації.
Якщо спочатку хочеться розібратися в термінології, почніть зі статті «Що таке база даних: як вона влаштована і навіщо потрібна сайту», а особливості MySQL і MariaDB розглянуто окремо в матеріалі «MySQL і MariaDB для сайту».