Kiedy uruchamiam mój serwer MySQL, pojawia się ten błąd:
/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.
Uruchomiłem mysql_upgrade
go, aby go odbudować i działa, aby go odbudować. Zanim to zrobiłem, usunąłem i zainstalowałem MySQL. Jednak gdy próbowałem ponownie uruchomić, pojawia się ten sam błąd. Jestem pewien, że nie jest to problem z uprawnieniami, ponieważ wszystkie pliki i katalogi są tworzone przez mysql
użytkownika.
Czy możesz mi doradzić, jak naprawić ten błąd?
Odpowiedzi:
Jeśli masz katalog danych mysql w niestandardowej lokalizacji, a twój system ma apparmor, upewnij się, że
/etc/apparmor.d/usr.sbin.mysqld
twój katalog danych znajduje się na białej liście. Konfiguracja powinna wyglądać następująco:Demon Apparmor musi zostać zrestartowany po wprowadzeniu jakichkolwiek zmian w konfiguracji.
źródło
apparmor
od czasu do czasu budzi nas, żebyśmy nie zapomnieli o nim .../etc/apparmor.d/abstractions/user-tmp
. Kiedy kładęowner /mysql-tmp/** rwkl, /mysql-tmp/ r,
na/etc/apparmor.d/local/usr.sbin.mysqld
nim rozpoczął pracę dla mnie na Ubuntu 14.04.Czy na pewno nie chodzi o uprawnienia? errno: 13 :
Pierwszą rzeczą, którą należy wypróbować, jest zmiana własności katalogu danych MySQL , na przykład, jeśli uruchamiasz MySQL z użytkownikiem mysql :
Inną sprawą do sprawdzenia jest to, czy właściciel procesu mysqld (najprawdopodobniej mysql ) ma niezbędne uprawnienia do miejsca docelowego zdefiniowanego jako tmpdir . A jeśli z jakiegokolwiek powodu powyższe nie działa, spróbuj prześledzić proces mysqld , aby zobaczyć, gdzie i dlaczego odmawia zgody :
źródło
Zgadzam się z Dimitre. Ten problem powstaje głównie z powodu niewystarczających uprawnień. Zmień własność folderu głównego MySql na mysql.
Możesz jednak zmienić uprawnienia do skryptów Mysql na niestandardowego użytkownika.
To zadziałało dla mnie.
źródło
W moim przypadku musiałem umieścić katalog danych MySQL wraz z
ibdata1
folderem w innym partycjonowaniu, ponieważ mój plikibdata1
rozwijał się zbyt szybko i wystąpił problem z pamięcią. W tym celu musiałem zmienić mój plik.cnf jak poniżej.my.cnf był:
my.cnf teraz:
Próbowałem,
ale nadal pojawia się ten sam błąd powyżej. Potem próbowałem zmienić
/etc/apparmor.d/usr.sbin.mysqld
plik. To działało dla mnie dobrze.Powinniśmy dodać nasz nowy folder do białej listy
usr.sbin.mysqld
.Zamiast powyższych linii dodaj:
Następnie zrestartuj serwer MySQL.
źródło
Jeśli korzystasz z SELinux, poniższe informacje mogą również pomóc ...
źródło
restorecon -R /var/lib/mysql
pomogło poprawnie przywrócić ustawienia SELinux dla katalogu.Miałem ten problem po aktualizacji z 5.5 do 5.6.
O dziwo wyglądało na to, że
mysql
użytkownik został usunięty i ponownie utworzony, co spowodowało, że wszystkie pliki mysql zasadniczo „utraciły” swoje uprawnienia ...Dowiedziałem się tego, przechodząc do katalogu mysql (który w moim przypadku nie był domyślnym katalogiem, ponieważ przeniosłem go) i zobaczyłem, że właściciel był tylko numerem uid i guid ... Więc po prostu uruchomiłem
chown mysql:mysql
wszystkie reż. i pliki oraz voilaźródło
To proste
chown
działał również dla mnie, nie powodując już awarii:Na szczęście gra z apparmor staje się skomplikowana i trudna do edycji.
źródło