Ошибка MySQL 1227 в BitrixEnv после обновления или переноса: как исправить
Ошибка MySQL 1227 в BitrixEnv: решение после обновления до 9.0.10 или переноса сайта
После обновления BitrixEnv до версии 9.0.10 или при переносе сайта на новый сервер нередко возникает ошибка:
MySQL query error: (1227) Access denied; you need (at least one of) the SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation (400) SET innodb_strict_mode=0
Она появляется, когда ядро Битрикс пытается отключить строгий режим InnoDB (innodb_strict_mode=0), но у пользователя базы данных нет нужных привилегий. Ниже — понятные варианты решения, которые подходят именно для BitrixEnv и типовых сценариев миграции
Почему возникает ошибка
-
Битрикс автоматически пытается сбросить режим: ядро делает запрос
SET innodb_strict_mode=0, чтобы избежать жёсткой проверки данных InnoDB. -
Ограничение прав на сервере: для выполнения такого
SETнужны привилегииSESSION_VARIABLES_ADMINилиSYSTEM_VARIABLES_ADMIN, которые по умолчанию не выдаются обычным пользователям БД. - Изменение конфигурации при обновлении/переносе: на новом сервере или после обновления BitrixEnv настройки MySQL могут быть «строже», а права пользователя — без расширенных привилегий.
Как исправить: 3 рабочих способа
Способ 1. Отключить innodb_strict_mode на уровне сервера (рекомендуется для BitrixEnv)
Это самый стабильный вариант: если режим выключен глобально, Битрикс не будет пытаться менять его в сессии — и ошибка не появится.
- Подключитесь к серверу по SSH.
- Откройте конфигурационный файл MySQL/MariaDB. Чаще всего это:
/etc/my.cnf- или
/etc/mysql/my.cnf,/etc/my.cnf.d/mariadb.cnf(зависит от ОС и версии).
- В секции
[mysqld]добавьте строку:[mysqld] innodb_strict_mode=OFF - Перезапустите службу MySQL/MariaDB:
systemctl restart mysqld # или systemctl restart mariadb - Проверьте результат:
Должно вернуться значениеmysql -u root -p -e "SHOW VARIABLES LIKE 'innodb_strict_mode';"OFF.
Способ 2. Выдать пользователю БД нужные привилегии (если нельзя менять конфиг)
Если у вас есть root-доступ к MySQL и нельзя редактировать конфиг, можно дать пользователю, под которым работает Битрикс, требуемые права.
GRANT SESSION_VARIABLES_ADMIN ON *.* TO 'bitrix0'@'localhost';
FLUSH PRIVILEGES;
Замените имя_пользователя на реального пользователя БД из настроек Битрикс (db.php). В некоторых версиях MySQL может потребоваться SYSTEM_VARIABLES_ADMIN.
Способ 3. Обратиться в поддержку (для хостинга, облака, managed-решений)
Если сервер не ваш (shared-хостинг, облачная БД без root-доступа), единственный корректный путь — запрос в техподдержку:
- Попросите отключить
innodb_strict_modeглобально на сервере. - Или попросите выдать пользователю БД привилегию
SESSION_VARIABLES_ADMIN.
Не пытайтесь «обойти» ошибку через костыли в коде Битрикс — при обновлениях ядра такие правки будут перезаписаны, и ошибка вернётся.
Чего делать не стоит
- Не добавляйте
SET innodb_strict_mode=0в PHP-код перед запросами: это избыточно и снова упрётся в права. - Не меняйте ядро Битрикс вручную, чтобы убрать попытку установки переменной — при обновлении всё вернётся обратно.
- Не путайте с настройками PHP или модулей Битрикс: проблема исключительно на стороне MySQL и прав пользователя БД.
Как быстро проверить, что проблема решена
- Зайдите в консоль MySQL под root:
mysql -u root -p - Выполните:
Убедитесь, что значение —SHOW VARIABLES LIKE 'innodb_strict_mode';OFF. - Проверьте права пользователя, под которым работает сайт:
SHOW GRANTS FOR 'имя_пользователя'@'localhost'; - Обновите страницу сайта или запустите установку/обновление Битрикс — ошибка больше не должна появляться.
Частые вопросы
Можно ли оставить innodb_strict_mode включённым?
Да, но тогда Битрикс не должен пытаться его отключать. Если ошибка возникает именно из-за попытки SET, проще выключить режим глобально — это стандартная практика для проектов на Битрикс.
Повлияет ли это на работу сайта?
Нет. Отключение innodb_strict_mode не ломает функционал Битрикс и не приводит к потере данных. Оно лишь убирает дополнительную проверку целостности данных на уровне движка InnoDB, которую Битрикс компенсирует своими механизмами.
Если вы не уверены, какой вариант выбрать, или нужна помощь с конкретной конфигурацией сервера — напишите детали (VPS/хостинг, ОС, версия MySQL/MariaDB), и мы подскажем точные шаги именно под вашу среду.