Почти любой динамический сайт хранит данные в базе: статьи WordPress, товары и заказы интернет-магазина, учётные записи пользователей и настройки. Загрузить файлы на хостинг недостаточно, сайту нужна пустая база и пользователь с правами на неё. В ISPmanager и то и другое создаётся в одном окне, но если не понимать назначение полей, потом сайт может не подключиться к базе или вместо текста появятся знаки вопроса. Ниже разберём процесс от начала до конца.
База, пользователь и пароль: как они связаны
База данных — это набор таблиц, а пользователь — логин, под которым к этим таблицам обращаются. Сайт никогда не подключается к базе напрямую, он всегда входит под именем пользователя с паролем, поэтому в конфигурации сайта четыре значения: адрес сервера, имя базы, имя пользователя и пароль. Одному пользователю можно выдать несколько баз, но с точки зрения безопасности лучше заводить отдельного пользователя для каждого сайта. Тогда уязвимость в одном сайте не откроет доступ к данным другого.
Помните также, что пользователь базы — это не логин вашего хостинг-аккаунта. Пароль от панели и пароль от базы должны быть разными, иначе утечка конфигурационного файла поставит под угрозу весь аккаунт.
Создание новой базы в ISPmanager
Откройте панель ISPmanager со страницы хостинга в кабинете sayt.uz. В левом меню найдите раздел «Базы данных» (в английском интерфейсе — Databases) и нажмите кнопку создания. В открывшейся форме будут поля:
- Имя — название базы, только латиница, цифры и подчёркивание, например
shop_db. В некоторых конфигурациях панель автоматически добавляет к имени префикс аккаунта, итоговое имя проверьте в списке. - Сервер баз данных — обычно MySQL или MariaDB; если вариант один, не меняйте его.
- Кодировка — выбирайте
utf8mb4. Она корректно хранит узбекские, русские и любые другие символы, включая эмодзи. - Пользователь — выберите «создать нового пользователя» и задайте имя, например
shop_user. - Пароль — возьмите случайный пароль, который предлагает панель, или введите сложный пароль не короче 16 символов и сохраните его в надёжном месте.
- Удалённый доступ — если такая опция есть, без необходимости не включайте её: безопаснее, когда база доступна только изнутри сервера.
После сохранения база появится в списке, рядом будет указан её пользователь-владелец. Если пароль забыт, его можно сменить в списке пользователей баз данных того же раздела, но после этого обязательно обновите пароль и в конфигурации сайта.
Подключение сайта к базе: WordPress и Laravel
Допустим, небольшой магазин одежды в Ташкенте запускает сайт на WordPress на домене misol.uz. Файлы загружены, база shop_db и пользователь shop_user созданы. Теперь в файле wp-config.php заполняются строки:
define( 'DB_NAME', 'shop_db' );
define( 'DB_USER', 'shop_user' );
define( 'DB_PASSWORD', 'здесь-сложный-пароль' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
В качестве адреса сервера обычно указывают localhost, так как сайт и база находятся на одном сервере. Если подключение не проходит, посмотрите, какой адрес сервера баз данных указан в панели, или уточните в техподдержке. В Laravel и других фреймворках те же значения записываются в файл .env:
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=shop_db
DB_USERNAME=shop_user
DB_PASSWORD=здесь-сложный-пароль
Поскольку в этих файлах пароль хранится открытым текстом, убедитесь, что они не открываются через браузер. У проекта на Laravel корень сайта должен указывать на каталог public, тогда .env не будет доступен из сети.
Перенос старого сайта: импорт дампа через phpMyAdmin
Если сайт переезжает с другого хостинга, в пустую базу нужно загрузить старые данные. В списке баз ISPmanager выберите нужную и нажмите кнопку открытия phpMyAdmin. Там выберите базу слева, перейдите на вкладку «Импорт», укажите файл .sql или .sql.gz и запустите загрузку. Очень большой файл через браузер может упереться в ограничения по времени или размеру; в таком случае удобнее разбить дамп на части или попросить техподдержку выполнить импорт.
Если в тарифе есть доступ по SSH, большой дамп надёжнее загрузить из командной строки:
mysql -u shop_user -p shop_db < backup.sql
# для сжатого файла:
gunzip < backup.sql.gz | mysql -u shop_user -p shop_db
Команда запросит пароль, после ввода начнётся импорт. При снятии дампа со старого сайта тоже следите, чтобы кодировка была utf8mb4, иначе кириллица может превратиться в нечитаемые символы.
Частые ошибки и их причины
Сообщения «Error establishing a database connection» или «Access denied for user» почти всегда означают, что одно из значений в конфигурации неверно. Чаще всего забывают про префикс: вы пишете shop_db, а база на самом деле создана с другим полным именем. Вторая частая причина — лишний пробел в конце пароля при копировании. В обоих случаях помогает скопировать точные имена из списка ISPmanager и заново задать пароль.
Если узбекский или русский текст на сайте отображается как «????», база или таблицы созданы в старой кодировке latin1. Чтобы этого не случилось, создавайте базу сразу в utf8mb4. Ошибка «Too many connections» обычно говорит о том, что код сайта не закрывает соединения или на сайт идёт волна ботов; здесь стоит посмотреть журналы ошибок и при необходимости написать в поддержку.
Как держать базы в порядке
Для каждого сайта заводите отдельную базу и отдельного пользователя, давайте понятные имена, например klinika_db и maktab_db, чтобы через год не путаться, что к чему относится. Перед удалением неиспользуемой базы сохраните её копию на компьютер через «Экспорт» в phpMyAdmin. Возьмите за правило экспортировать базу и перед серьёзными изменениями — обновлением плагинов или редизайном сайта. Если возникнут вопросы, напишите в техподдержку через тикет в кабинете sayt.uz.