SystemdDoctor
служба не работает mysql права частое

MySQL: Can't open the mysql.plugin table и повреждение системных таблиц

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

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Каталог данных принадлежит не тому пользователю

    Самая частая причина после восстановления из копии под root. Сервер работает от mysql и доступа к файлам не получает.

  2. Схема системных таблиц не обновлена после смены версии

    Новый сервер на старом каталоге данных может не найти нужных таблиц. Пакетное обновление обычно делает это само, ручная замена бинарников — нет.

  3. Повреждены файлы системных таблиц

    После аварийного выключения или ошибок диска файлы могут быть повреждены. Сервер сообщает об этом при попытке их открыть.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Главный источник: конкретная таблица и причина.

sudo tail -50 /var/log/mysql/error.log

Владелец каталога данных.

sudo ls -ld /var/lib/mysql

Код завершения и последние строки.

systemctl status mysql --no-pager -l

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Каталог данных принадлежит не тому пользователю
Почему происходит
Самая частая причина после восстановления из копии под root. Сервер работает от mysql и доступа к файлам не получает.
Как проверить
Посмотрите владельца каталога и файлов внутри.
sudo ls -ld /var/lib/mysql && sudo ls -la /var/lib/mysql | head
Как исправить
Смените владельца рекурсивно и запустите службу.
sudo chown -R mysql:mysql /var/lib/mysql && sudo systemctl start mysql
2. Схема системных таблиц не обновлена после смены версии
Почему происходит
Новый сервер на старом каталоге данных может не найти нужных таблиц. Пакетное обновление обычно делает это само, ручная замена бинарников — нет.
Как проверить
Посмотрите версию сервера и записи об обновлении схемы.
mysqld --version
sudo grep -i "upgrade" /var/log/mysql/error.log | tail -10
Как исправить
Запустите обновление схемы средствами MySQL (в 8.0 это делает сервер сам при старте, в старых версиях — mysql_upgrade).
3. Повреждены файлы системных таблиц
Почему происходит
После аварийного выключения или ошибок диска файлы могут быть повреждены. Сервер сообщает об этом при попытке их открыть.
Как проверить
Посмотрите журнал ошибок и записи ядра о диске.
sudo tail -40 /var/log/mysql/error.log
journalctl -k -b --no-pager | grep -iE "I/O error|ext4-fs error" | head
Как исправить
Восстановите данные из резервной копии. Попытки починить системные таблицы вручную на повреждённом диске обычно заканчиваются хуже.

Пример вывода

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

× mysql.service - MySQL Community Server
     Active: failed (Result: exit-code) since Mon 2026-09-15 10:11:02 MSK; 2s ago

mysqld[4100]: [ERROR] [MY-010735] [Server] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
mysqld[4100]: [ERROR] [MY-010119] [Server] Aborting
systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация MySQL: запуск и обновление документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено сменой владельца /var/lib/mysql на root.
    собственная проверка, systemd 255
    сверено 15 сентября 2026