Ostatnio koledze zamarzyło się, by na jego VPSie działającym (jeszcze) pod kontrolą Debiana Jessie (Debian 8) można było z poziomu phpMyAdmin tworzyć bazy danych o dłuższych niż 16 znaków nazwach. W końcu – cytuję – mamy 2018, a nie 1996. Oczywiście postanowiłem pomóc, zwłaszcza że rozwiązanie jest proste – aktualizacja.

MySQL 5.7 w Debian Jessie

Aktualizacja systemu do Debian Stretch (Debian 9), lub aktualizacja bazy danych do najnowszej wersji. Tak duża aktualizacja w środowisku produkcyjnym rzadko kiedy przebiega bez problemów. A tu jeszcze baza MySQL została wyparta przez MariaDBniby zgodne, ale znając życie, niespodzianki mogą być. Dlatego zaproponowałem, że najprościej będzie zaktualizować samą usługę MySQL do nowszej wersji (te 16 znaków w nazwie to nie jedyny powód ;-)).

Zaczynamy od dodania odpowiednich źródeł pakietów w systemie:

sudo nano /etc/apt/sources.list

I dodajemy 2 linijki:

deb http://repo.mysql.com/apt/debian/ jessie mysql-5.7
deb-src http://repo.mysql.com/apt/debian/ jessie mysql-5.7

Ew. dla wersji 5.8:

deb http://repo.mysql.com/apt/debian/ jessie mysql-5.8
deb-src http://repo.mysql.com/apt/debian/ jessie mysql-5.8

Oraz dodajemy odpowiednie klucze:

wget https://repo.mysql.com/RPM-GPG-KEY-mysql
sudo apt-key add ./RPM-GPG-KEY-mysql

Na koniec uruchamiamy pełną aktualizację pakietów:

sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y

Wprawdzie można aktualizację przeprowadzić bardziej precyzyjnie, koncentrując się na MySQL, ale zaktualizowany system, to bezpieczniejszy system, a więc na pewno nie zaszkodzi…

Wersja MySQL przed aktualizacją:

patryk@webinsider:~$ mysql --version
mysql Ver 14.14 Distrib 5.5.59, for debian-linux-gnu (x86_64) using readline 6.3

Wersja MySQL po aktualizacji:

patryk@webinsider:~$ mysql --version
mysql Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using EditLine wrapper
Możecie też skorzystać z tej metody w przypadku Debiana Stretch, wtedy po prostu zmieńcie „jessie” na „stretch” w linijkach wstawianych do pliku „source.list”.

Aktualizacja baz i tabel

Z racji tego, że jest to duża aktualizacja, prawdopodobnie po jej zakończeniu, np. w phpMyAdmin traficie np. na taki błąd:

#3009 - Column count of mysql.user is wrong. Expected 45, found 42. Created with MySQL 50559, now running 50721. Please use mysql_upgrade to fix this error.

By go skorygować należy zaktualizować bazy i tabele do nowszych wersji, np. za pomocą takiego polecenia:

mysql_upgrade -u root -p

Przy małych bazach będzie szybko, przy większych chwilę trzeba poczekać…

Na koniec zrestartuj usługę MySQL

Kolejny błąd na który możecie po takiej aktualizacji natrafić, również w phpMyAdmin, np. podczas próby zaimportowania danych do bazy z pliku to:

Warning in ./libraries/dbi/DBIMysqli.php#204
mysqli_query(): (HY000/1682): Native table 'performance_schema'.'session_variables' has the wrong structure

Rozwiązanie tego problemu jest jeszcze prostsze – wystarczy zrestartować usługę (serwera) MySQL:

sudo service mysql restart
(!) Zgłoś błąd na stronie | Lub postaw nam kawę :-)
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk