Обновление mysql до mysql 8.0 на Centos 7
Обновление mysql до mysql 8.0 на Centos 7¶
Подготовительне действия¶
Подключаем репозиторий mysql-community¶
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
yum install mysql80-community-release-el7-3.noarch.rpm
Смотрим тчо за версия mariadb/mysql у нас установлена¶
Проверяем что за версия mariadb установлена на сервере(по умолчанию 5.5 идёт с Centos 7)
rpm -qa | grep -i -P '^mariadb-'
если команда не возвращает результат, значит кто-то уже сменил mariadb на mysql на этом сервере, делаем
rpm -qa | grep -i -P '^mysql-'
Создаём резервные копии конфигурацнного файла и баз данных¶
Бэкапим старый конфиг mysql
cp /etc/my.cnf /etc/my.cnf_backup_$(LC_TIME='en_US.UTF-8' date '+%Y%m%d')
Дампим на всякий случай все базы в общий файл дампа
mysqldump --events --routines --triggers --all-databases > /root/alldb.sql
Останаливаем mariadb
systemctl stop mariadb
копируем на всякий случай содержмиое /var/lib/mysql в каталог вида /var/lib/mysql_backup_SOME_DATE
cp -R /var/lib/mysql /var/lib/mysql_backup_$(LC_TIME='en_US.UTF-8' date '+%Y%m%d')
Удаление пакетов старой версии MySQL(в нашем случае mariadb)¶
Удаляем без зависимостей старые пакеты Mariadb
rpm -qa | grep -i -P '^mariadb-'|xargs rpm -e --nodeps
Установка обновлённой версии MySQL¶
Нежданчик :)
Сразу 8-ка после mariadb 5.5 не заведётся, до 8-ки можно обновится только с MySQL 5.7.9 или совместимой с ней(по версии схемы InnoDB) версии Mariadb, поэтому обновляетмся до 5.7, а с 5.7 до 8.0.
Смотрим, не включена ли у нас уже какая-либо версия репозитория mysql-community¶
yum repolist enabled|grep -P 'mysql[0-9]{1,2}-community'
yum-config-manager --disable mysql80-community
Включаем нужную нам версию репозитория mysql-community¶
Выполняем
yum-config-manager --enable mysql57-community
yum repolist enabled|grep -P 'mysql[0-9]{1,2}-community'
Если этот репозиторий ранее на этом сервере уже подключался когда-то, чистим кэш yum
yum clean all
Установка промежуточной версии MySQL 5.7¶
Ставим mysql 5.7
yum install mysql-community-server mysql-community-libs-compat mysql-community-libs mysql-community-common
systemctl start mysqld
mysql_upgrade
systemctl stop mysqld
yum-config-manager --disable mysql57-community
Установка нужной нам версии MySQL 8.0¶
Включаем репозиторий mysql80
yum-config-manager --enable mysql80-community
systemctl enable mysqld
systemctl start mysqld
mysql -V
mysql Ver 8.0.21 for Linux on x86_64 (MySQL Community Server - GPL)
На заметку
Как видите, после обновления до MySQL 8.0 мы не запускали mysql_upgrade, хотя при обновлении до любой более старой версии, после обновления необходимо было запускать данную утилиту для обновления схемы таблиц. Но, так было раньше. Для MySQL 8.0 запуск данной утилиты после обновления не имеет смысла, так как использование данной утилиты в этом случае не требуется — при первом запуске MySQL 8.0 на сервере, где уже присутствует MySQL Data Directory(как правило это /var/lib/mysql) восьмая версия MySQL самостоятельно апгрейдит схему таблиц до актуальной версии.
Включение старого способа авторизации в MySQL¶
Если ваше приложение не поддерживает новый способ аутентификации MySQL, и ему требуется mysql_native_password для корректной работы с БД mysql(в частности это требуется пока для phpMyAdmin), делаем
ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
Если этот механизм аутетификации требуется сделать из коробки доступным всем пользователям mysql, в секцию
[mysqld]
default-authentication-plugin=mysql_native_password
Правки для корректнйо работы mysql 8 в конфиге ISPManager 5¶
Если у нас на сервере стоит ISPManager 5, также потребуется поправить /usr/local/mgr5/etc/ispmgr.conf.d/mysql.conf
Смотрим, что было там
cat /usr/local/mgr5/etc/ispmgr.conf.d/mysql.conf
path mysql_restart service mariadb restart
path mysqld.ini /etc/my.cnf
path mysqld /usr/libexec/mysqld
заменяем на
path mysql_restart systemctl restart mysqld
path mysqld.ini /etc/my.cnf
path mysqld /sbin/mysqld
сохраняем.
Заключение¶
Если на сервере ранее стояла не самая актуальная версия phpMyAdmin, нужно обновить и phpMyAdmin. Если нет. обновление MySQL до 8-й версии можно считать оконченным.