← К списку статей

MySQL простыми словами: где хранятся заказы, пользователи и товары на вашем сайте

MySQL - одна из самых распространённых баз данных в мире веба. Именно в ней на большинстве хостингов лежат пользователи (логины, email, пароли), товары (названия, цены, остатки) и заказы (состав корзины, сумма, статус оплаты). Если у вас WordPress, OpenCart, Bitrix или типовой интернет-магазин на PHP, с высокой вероятностью «память» сайта - это MySQL. Владельцу бизнеса не нужно писать SQL-запросы, но понимать, где и как хранятся данные клиентов - значит не терять заказы при смене хостинга, вовремя делать бэкапы и не путать «файлы на диске» с «таблицами в базе».

  • MySQL - реляционная база данных: данные лежат в таблицах со связями
  • Пользователи - отдельная таблица: email, хеш пароля, роль, дата регистрации
  • Товары - каталог: артикул, цена, описание, остаток на складе
  • Заказы - связка клиента, товаров, суммы и статуса доставки
  • Где встречается - WordPress, WooCommerce, OpenCart, Bitrix, Laravel, многие хостинги
  • Главный риск - нет бэкапа БД, один логин на все проекты, устаревшая версия MySQL

Что такое MySQL простыми словами

MySQL - программа на сервере, которая хранит данные в таблицах. Таблица похожа на Excel: строки - записи, столбцы - поля. Разница в том, что MySQL одновременно обслуживает сайт, админку и JavaScript-корзину, не даёт двум менеджерам «перезаписать» одну ячейку и умеет связывать таблицы между собой.

Схема для типичного сайта:

  1. Посетитель нажимает «Оформить заказ».
  2. PHP (или другой backend) получает данные формы.
  3. PHP отправляет в MySQL команды: «создай заказ», «спиши остаток», «сохрани email клиента».
  4. MySQL записывает данные на диск сервера - в файлы базы, а не в HTML-страницу.
  5. Пользователь видит «Спасибо за заказ» - это уже результат чтения из MySQL.

Важно: картинки товаров, PDF и логотип лежат в файловой системе (папки на сервере). MySQL хранит ссылку на файл и метаданные: цена, название, SEO-заголовок. Удалить папку uploads - и в базе останутся «битые» пути к картинкам.

Что хранится Где физически Пример
Текст страницы, цена, email MySQL (таблицы) wp_posts, oc_product
Фото товара, видео Папки на диске /uploads/2026/07/photo.jpg
Код сайта PHP-файлы index.php, плагины
Кеш страниц Файлы или Redis ускорение, не «источник правды»

Где хранятся пользователи, товары и заказы

Пользователи (users)

Таблица пользователей - «картотека клиентов и сотрудников». Типичные поля:

  • id - уникальный номер записи;
  • email / login - для входа в личный кабинет;
  • password_hash - не сам пароль, а его хеш (так безопаснее);
  • role - клиент, менеджер, администратор;
  • created_at - дата регистрации.

В WordPress это таблица wp_users, в OpenCart - oc_customer, в Bitrix - свои таблицы с префиксом. Один пользователь - одна строка. Если клиент оформил пять заказов, в таблице users он всё равно один, а заказы ссылаются на его id.

Товары (products)

Каталог - отдельная таблица (или несколько связанных):

  • sku / артикул - внутренний код;
  • name, description - название и описание для сайта;
  • price - цена; часто отдельно special_price для акций;
  • quantity / stock - остаток на складе;
  • category_id - связь с категорией «Обувь», «Электроника».

Категории, бренды, фильтры - другие таблицы, связанные через внешние ключи. Именно поэтому «просто поправить цену в Excel» на живом сайте не работает: цена в MySQL, а сайт читает её через PHP при каждом просмотре карточки.

Заказы (orders)

Заказ - это событие, которое связывает клиента, товары и деньги:

Таблица Что хранит
orders Номер заказа, user_id, сумма, статус, адрес доставки
order_items Какие товары в заказе, количество, цена на момент покупки
payments Статус оплаты, ID транзакции Payme/Stripe/Click
order_status_history «Создан → Оплачен → Отправлен → Доставлен»

Почему отдельная таблица позиций: цена товара в каталоге меняется, а в заказе должна остаться та, что была при покупке. Поэтому order_items хранит снимок цены, а не только ссылку на текущую карточку.

Как MySQL работает вместе с вашим сайтом

Сайт не открывает MySQL напрямую. Цепочка такая:

Браузер → PHP/Python/Node.js → MySQL → ответ → HTML/JSON → пользователь

PHP (WordPress, Bitrix, OpenCart) - самый частый «переводчик». Он:

  • проверяет логин и пароль по таблице users;
  • выбирает товары для каталога: SELECT * FROM products WHERE category_id = 5;
  • создаёт заказ в транзакции: либо всё записалось, либо откат при ошибке.

JavaScript в браузере обычно не ходит в MySQL напрямую - это было бы дырой в безопасности. JS вызывает API (PHP-скрипт), а тот уже работает с базой. Исключение - редкие антипаттерны; нормальная архитектура всегда через backend.

Где физически лежит MySQL

На shared-хостинге (Timeweb, Beget, Hostinger) MySQL - отдельный сервис: вам дают хост, имя базы, логин и пароль. Данные лежат на дисках провайдера; вы управляете через phpMyAdmin или панель хостинга.

На VPS/VDS MySQL ставит администратор или подрядчик; файлы базы - в /var/lib/mysql/ (Linux).

В облаке (AWS RDS, DigitalOcean Managed DB) - managed-сервис: меньше возни с обновлениями, плата по подписке.

Типичные таблицы интернет-магазина

Упрощённая схема, которую можно показать директору на одном слайде:

users ──────┬──── orders ────── order_items ────── products
            │         │
            │         └──── payments
            │
            └──── addresses (адреса доставки)

categories ─── products
brands ─────── products

users → orders: один клиент, много заказов.
orders → order_items → products: один заказ, несколько позиций, каждая ссылается на товар.
products → categories: товар в одной или нескольких категориях.

Когда спрашивают «сколько мы продали кроссовок Nike за март» - это SQL-запрос к таким таблицам. Подробнее о языке запросов и роли SQL для руководства - в отдельной статье.

MySQL и популярные CMS

CMS / платформа База по умолчанию Где заказы и клиенты
WordPress MySQL / MariaDB wp_users, wp_posts, WooCommerce: wp_wc_*
WooCommerce MySQL wp_posts (заказы как тип записи), мета-таблицы
OpenCart MySQL oc_order, oc_customer, oc_product
1C-Bitrix MySQL Собственная схема, интеграция с 1С
Laravel / PHP custom MySQL или PostgreSQL Таблицы по миграциям разработчика
Django PostgreSQL чаще MySQL тоже возможен

MariaDB - форк MySQL, совместимый «из коробки». На многих хостингах в панели написано «MySQL», а под капотом MariaDB - для сайта разницы почти нет.

Если сайт на Django или современном Python-стеке, чаще выбирают PostgreSQL, но принцип тот же: таблицы users, products, orders - просто другие имена и типы полей.

Чем MySQL отличается от PostgreSQL и Excel

Критерий Excel MySQL PostgreSQL
Одновременные заказы с сайта Нет Да Да
Типичный WordPress-хостинг - Включён Реже
Сложная аналитика Ограничена Хорошо Очень хорошо
Стоимость старта $0 $0 - $20/мес на хостинге Аналогично
Кто выбирает Менеджер «на коленке» CMS, PHP-магазины Новые веб-проекты, SaaS

Для владельца бизнеса: MySQL - не «хуже» PostgreSQL, а стандарт экосистемы PHP-CMS. Менять MySQL на PostgreSQL «просто так» при работающем WordPress - лишние расходы. Менять имеет смысл при новой разработке или когда упираетесь в лимиты и нужна другая архитектура.

Excel оставьте для разовых расчётов. Операционные заказы и клиенты - в MySQL (или другой БД), иначе сайт и склад живут в разных мирах.

Что должен знать владелец бизнеса

Бэкап базы - не опция, а обязанность

Потеря MySQL без бэкапа = потеря всех заказов, клиентов и паролей (хешей). Файлы темы WordPress можно скачать по FTP; заказы восстановить нельзя, если не было дампа .sql или автобэкапа хостинга.

Минимум:

  • ежедневный автобэкап через панель хостинга;
  • перед обновлением CMS и плагинов - ручной дамп;
  • хранить копию не только на том же сервере.

Доступы к MySQL

Логин и пароль к базе - как ключ от сейфа. Не вставлять в публичный GitHub, не слать в общий чат с подрядчиками «навсегда». Отдельный пользователь БД для каждого проекта; права «только чтение» для аналитика, если нужен прямой доступ.

Версия MySQL

Устаревший MySQL 5.7 (или 5.6) - риск безопасности и несовместимости с новыми версиями PHP и CMS. При SEO-аудите и техосмотре сайта версию БД проверяют вместе с версией PHP.

Миграция на другой хостинг

Перенос сайта = файлы + дамп MySQL + настройка config (хост, логин, пароль, имя базы). «Скопировали только папку public_html» - сайт откроется, но заказов не будет. Это частая ошибка при смене хостинга «своими силами».

Типичные проблемы и риски

«Сайт тормозит» - виноват MySQL?

Иногда да: нет индексов на таблице заказов за три года, каталог на 50 000 SKU без оптимизации, дешёвый хостинг с перегруженным общим MySQL. Иногда нет - виноваты тяжёлые плагины, отсутствие кеша, картинки по 5 MB. Диагностику делает разработчик; владельцу достаточно знать, что база - часть производительности, не только «скорость интернета».

Дубли клиентов и «потерянные» заказы

Бывает при ручном импорте Excel в MySQL, при двух формах заказа (сайт + Telegram без синхронизации), при сбое оплаты: деньги списались, а PHP не успел записать заказ. Решение - транзакции, webhooks платёжки, интеграция с CRM, а не «ещё одна таблица в Google Sheets».

Взлом через SQL-инъекцию

Если подрядчик пишет «сырой» PHP без параметризованных запросов, злоумышленник может прочитать или удалить таблицы. Признак зрелости - использование ORM, prepared statements, регулярные обновления CMS. После взлома WordPress первым делом проверяют админов в wp_users и посторонние записи в базе.

Рост данных

100 заказов в месяц MySQL переваривает на любом хостинге. 10 000 заказов в день - нужны индексы, архивация старых логов, возможно отдельный сервер БД. Планируйте архив заказов старше 2-3 лет, если отчётность уже в BI или 1С.

Когда MySQL «не видно», но она есть

  • Конструкторы (Tilda, Wix) - данные форм на их серверах, не ваш MySQL.
  • SaaS CRM (amoCRM, HubSpot) - клиенты в облаке CRM; сайт связан через API.
  • Маркетплейсы (Wildberries, Ozon) - заказы на стороне площадки; ваш сайт может вообще без MySQL, если это только визитка.

Если же у вас собственный домен, WordPress, OpenCart, Bitrix - MySQL почти наверняка есть. Уточните у подрядчика: «Где хранятся заказы и есть ли ежедневный бэкап базы?»

Итог

MySQL - место, где на типичном PHP-сайте живут пользователи, товары и заказы. Это не папка на диске и не «настройка в админке» - отдельная программа на сервере с таблицами и правилами целостности. PHP читает и пишет в MySQL; JavaScript показывает результат пользователю; картинки лежат отдельно в файлах.

Владельцу бизнеса стоит:

  • знать, что бэкап базы так же важен, как бэкап файлов сайта;
  • не хранить единственную копию заказов в Excel;
  • при смене хостинга требовать перенос дампа MySQL, а не только FTP;
  • понимать разницу между «упал сайт» (PHP/хостинг) и «пропали данные» (MySQL без бэкапа).

Хорошая MySQL незаметна - пока есть актуальный бэкап и доступы под контролем. Плохая - когда об этом вспоминают после исчезновения трёх лет заказов.

Часто задаваемые вопросы

Где физически хранятся данные MySQL на моём хостинге?

На серверах хостинг-провайдера - в специальных файлах базы данных, обычно на тех же машинах, что и сайт (shared) или на выделенном DB-сервере (VPS/облако). Вы не видите их как обычные папки в FTP: доступ через phpMyAdmin, панель хостинга или команду экспорта. Бэкап - это скачанный .sql-файл или автоматическая копия в панели; без него «где лежит» не спасёт при поломке диска.

Можно ли посмотреть заказы в MySQL без программиста?

Частично да. В phpMyAdmin можно открыть таблицу заказов и увидеть строки - номер, сумму, дату. Но имена таблиц (wp_wc_orders, oc_order) и связи между ними знает разработчик; случайное редактирование может сломать сайт или показать неверные суммы. Для ежедневной работы лучше админка CMS или CRM; прямой доступ к MySQL - для техподдержки, миграций и аудита.

Чем MySQL отличается от MariaDB?

MariaDB - ответвление MySQL, созданное после смены владельца Oracle. Для WordPress, OpenCart и Bitrix они взаимозаменяемы в типичной конфигурации. Хостинг часто пишет «MySQL» в тарифе, а ставит MariaDB - это нормально. Владельцу важнее версия (не ниже 8.0 / 10.6+) и наличие бэкапов, а не название на логотипе.

Потеряю ли я заказы, если сменю хостинг?

Нет, если перенесёте дамп базы. Алгоритм: экспорт MySQL со старого хостинга → импорт на новом → обновление логина/пароля/хоста в wp-config.php или аналоге → проверка тестового заказа. Да, потеряете, если скопируете только файлы сайта без .sql. Перед миграцией сделайте полный бэкап и проверьте количество заказов в админке до и после.

Нужен ли MySQL, если у меня только лендинг на Tilda?

Нет для самого Tilda - заявки хранятся у конструктора или уходят на email/CRM. Да, если параллельно есть WordPress-блог, OpenCart или самописный личный кабинет на поддомене. Уточните архитектуру: один «красивый лендинг» без CMS может обходиться без MySQL; интернет-магазин с историей заказов - без базы данных не обойтись.

Контакты