Когда я запускаю свой сервер MySQL, я получаю эту ошибку:
/usr/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
Я побежал, mysql_upgrade
чтобы восстановить его, и он работает, чтобы восстановить. Прежде чем я это сделал, я удалил и установил MySQL. Однако, когда я пытался перезапустить, я получаю ту же ошибку. Я уверен, что это не проблема с разрешениями, так как все файлы и каталоги создаются mysql
пользователем.
Не могли бы вы посоветовать мне, как исправить эту ошибку?
Ответы:
Если у вас есть каталог данных mysql в нестандартном месте, и ваша система имеет apparmor, убедитесь, что
/etc/apparmor.d/usr.sbin.mysqld
ваш каталог данных находится в белом списке. Конфигурация должна выглядеть так:Демон Apparmor должен быть перезапущен после внесения каких-либо изменений в конфигурацию.
источник
apparmor
время от времени возвращается, чтобы разбудить нас, просто чтобы мы не забыли о нем .../etc/apparmor.d/abstractions/user-tmp
. Когда я положилowner /mysql-tmp/** rwkl, /mysql-tmp/ r,
в/etc/apparmor.d/local/usr.sbin.mysqld
него начал работать для меня на Ubuntu 14.04.Вы уверены, что дело не в разрешениях? errno: 13 :
Первое, что нужно попробовать, это изменить владельца datadir MySQL , например, если вы запускаете MySQL с пользователем mysql :
Еще одна вещь, которую нужно проверить, - есть ли у владельца процесса mysqld (наиболее вероятно, mysql ) необходимые привилегии для места назначения, определенного как tmpdir . И если по какой-либо причине вышеприведенное не сработает, попробуйте отследить процесс mysqld, чтобы узнать, где и почему ему отказано в разрешении :
источник
Я согласен с Димитром. Эта проблема возникает в основном из-за недостаточных разрешений. Измените владельца корневой папки MySql на mysql.
Возможно, вы захотите изменить разрешение сценариев Mysql для своего пользовательского пользователя.
Это сработало для меня.
источник
В моем случае мне нужно было поместить каталог данных MySQL, включая
ibdata1
папку, в другой раздел, потому что мойibdata1
рос слишком быстро и возникла проблема с памятью. Для этого мне пришлось изменить мой файл .cnf, как показано ниже.my.cnf был:
my.cnf сейчас:
Я старался,
но все равно получил ту же ошибку выше. Затем я попытался изменить
/etc/apparmor.d/usr.sbin.mysqld
файл. Это хорошо сработало для меня.Мы должны внести белый список в нашу новую папку
usr.sbin.mysqld
.Вместо приведенных выше строк добавьте:
Затем перезапустите сервер MySQL.
источник
Если вы используете SELinux, то может помочь следующее:
источник
restorecon -R /var/lib/mysql
помогло правильно восстановить настройки SELinux для каталога.У меня была эта проблема после того, как я обновил с 5,5 до 5,6.
Странно, но выглядело так, как будто
mysql
пользователь был удален и воссоздан, что привело к тому, что все файлы mysql по существу «потеряли» свои разрешения ...Я узнал об этом, зайдя в каталог mysql (который в моем случае не был каталогом по умолчанию, поскольку я его переместил) и увидел, что владельцем был просто номер uuid и guid ... Итак, я просто запустил
chown mysql:mysql
все каталоги и файлы, и вуаляисточник
Это простое
chown
сработало и у меня, без сбоев:К счастью, игра с apparmor становится сложной и трудно редактируемой.
источник