Mysql Can’t open and lock privilege tables: Table ‘./mysql/servers.MYI’ is read only

Aktualizacja mysql na serwerach z DirectAdmin to w teorii prosta sprawa – wystarczy podmienić wersję w options.conf, następnie ./build update , ./build mysql i gotowe !

Nie zawsze jednak pójdzie wszystko gładko – a już szczególnie wtedy gdy komunikat błędu  nie mówi nic sensownego o problemie.

Stan wyjściowy:

Problem: Nie można wgrać bazy, bo “Unknown collation: ‘utf8mb4_unicode_520_ci’”

Najszybciej byłoby przekonwertować do utf8_unicode_ci, ale to rozwiązanie krótkodystansowe, i przyjemnie byłoby to na stałe rozwiązać, zrobić upgrade i mieć spokój.

Idąc za dokumentacją wystarczy zrobić:

I mamy po robocie – ale ciekawie zrobiło się w momencie gdy widzimy coś takiego:

A w  /home/mysql/[hostname].err :

Uprawnienia na /home/mysql – poprawne, uprawnienia na /home/mysql/mysql – poprawne, na servers.MYI i user.MYI – też

Więc co było złe?

Uprawnienia na /home 🙃

Domyślne uprawnienia to 711:

Jeżeli zmienimy je na 755, czyli damy uprawnienia do odczytu dla wszystkich, to upgrade pójdzie gładko:

Dodatkowe 2 wskazówki:

1)Przed upgrade warto zrobić kopię serwera mysql – w przypadku systemu debian 8 w katalogu /usr/local jest symlink z mysql do katalogu z aktualnie używaną wersją:

Wystarczy zrobić kopię mariadb i zapisać pod inną nazwą ( przy okazji – jeśli nazwiesz katalog z kopią “mariadb-5.5.46-linux-x86_64.kopia” to wiedz że build mysql go usunie….) i w przypadku fuckupu przywrócić katalog, lub skierować symlinka w odpowiednie miejsce

2) Wato zrobić upgrade stopniowo, tj jeśli masz jeszcze mariadb w wersji 5.5 najpierw podnieść go do 10.0, i dopiero później na 10.1

3)I najważniejsze, czyli: rób upgrade w nocy i zawsze miej backup wrazie “W” 😎

 

Oceń wpis

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *