Как обновить mysql ubuntu

Обновлено: 04.07.2024

MySQL – это популярная открытая система управления базами данных (СУБД), которая используется для хранения и извлечения данных множества различных приложений. MySQL является одним из компонентов стека LAMP.

Чтобы получить доступ к обновлениям и улучшениям СУБД, необходимо установить более новую версию MySQL (в репозиториях дистрибутивов Linux, как правило, хранятся несколько устаревшие версии). Для этого разработчики MySQL поддерживают собственный репозиторий программного обеспечения, с помощью которого можно легко установить последнюю версию СУБД и затем поддерживать ее в актуальном состоянии.

Данный мануал поможет добавить репозиторий MySQL, установить новую версию СУБД, а также защитить и протестировать установку.

Требования

Для работы нужен сервер Ubuntu 18.04, настроенный по этому мануалу.

1: Добавление репозитория MySQL

Разработчики MySQL предоставляют файл .deb, который отвечает за настройку и установку официальных репозиториев MySQL. Добавив репозиторий, вы сможете установить новую версию MySQL с помощью стандартного пакетного менеджера системы (в данном случае это apt). Загрузите файл .deb с помощью curl и установите его с помощью команды dpkg.

Откройте страницу загрузок сайта MySQL в браузере. Найдите кнопку Download в правом нижнем углу и перейдите на следующую страницу. На этой странице будет предложено войти в систему или зарегистрировать учетную запись веб-сервера Oracle. Этот этап можно пропустить; найдите ссылку No thanks, just start my download. Щелкните правой кнопкой мыши по ссылке и выберите Copy Link Address (или аналогичный вариант, который предложит ваш браузер).

Теперь можно загрузить файл. Откройте каталог:

Загрузите файл с помощью команды curl. Вставьте в команду скопированную ссылку на пакет.

Файл будет загружен в текущий каталог. Просмотрите содержимое каталога:

Теперь можно установить полученный файл:

sudo dpkg -i mysql-apt-config*

Команда dpkg используется для установки, удаления и проверки пакетов программного обеспечения .deb. Флаг –i указывает компоненты, которые нужно установить.

Во время установки вам будет представлен экран конфигурации, с помощью которого вы можете указать, какую версию MySQL нужно использовать, и установить репозитории других инструментов, связанных с MySQL. По умолчанию файл добавит информацию только о репозитории последней стабильной версии MySQL. В данном случае этого достаточно; выберите Ok и нажмите Enter.

После этого репозиторий будет добавлен на сервер. Обновите индекс пакетов:

sudo apt update

Чтобы не засорять пространство сервера ненужными файлами, удалите этот файл:

Репозиторий MySQL добавлен. Теперь с его помощью можно установить последнюю версию MySQL. Чтобы обновить конфигурацию этих репозиториев, просто запустите:

sudo dpkg-reconfigure mysql-apt-config

Затем выберите новые параметры и обновите индекс пакетов:

sudo apt-get update

2: Установка MySQL

Установите новую версию MySQL:

sudo apt install mysql-server

Менеджер apt просмотрит все доступные пакеты mysql-server и выберет наиболее новую версию MySQL. Затем он определит зависимости программы и предложит подтвердить установку. Для этого нажмите y и Enter.

После этого будет предложено установить root-пароль. Выберите и подтвердите надёжный пароль. Программа предложит выбрать плагин аутентификации. Рекомендуем использовать Use Strong Password Encryption (по умолчанию), чтобы выбрать его, нажмите ENTER.

СУБД MySQL будет установлена и запущена. Проверьте состояние MySQL:

Если в выводе есть строка Active: active (running), значит, СУБД успешно установлена и запущена.

3: Безопасность MySQL

MySQL поставляет команду, с помощью которой можно повысить безопасность свежей установки. Запустите её:

Команда запросит root-пароль MySQL. Введите его и нажмите Enter. После этого команда задаст вам ряд вопросов.

Для начала она предложит включить плагин проверки валидности паролей (он автоматически применяет определенные правила защиты паролей пользователей MySQL). Необходимость этого плагина полностью зависит от индивидуальных потребностей сервера. Чтобы включить его, введите y и Enter; чтобы пропустить этот вопрос, просто нажмите Enter. После включения плагина вам будет предложено выбрать уровень строгости проверки пароля (от 0 до 2). Выберите уровень и нажмите Enter, чтобы продолжить.

Затем команда предложит изменить root-пароль. Поскольку это свежая установка и пароль был выбран совсем недавно, вы можете не менять его. Чтобы продолжить, нажмите Enter.

На остальные вопросы можно ответить yes. Команда предложит удалить анонимных пользователей MySQL, запретить удаленный root-доступ, удалить тестовую базу данных и перезагрузить привилегии, чтобы все изменения вступили в силу. Введите y и нажмите Enter в каждом новом окне.

Сценарий завершит свою работу после того как вы ответите на все вопросы.

4: Тестирование установки MySQL

mysqladmin – это клиент командной строки MySQL. Используйте его, чтобы подключиться к серверу и вывести некоторую информацию о версии и состоянии MySQL:

mysqladmin -u root -p version

С помощью -u root клиент mysqladmin подключается как root- пользователь MySQL; флаг –p включает поддержку пароля, а version – это команда, которую нужно запустить.

В выводе вы увидите версию сервера MySQL, время его безотказной работы и некоторую другую информацию о состоянии.

mysqladmin Ver 8.0.11 for Linux on x86_64 (MySQL Community Server - GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 8.0.11
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 2 min 21 sec
Threads: 2 Questions: 10 Slow queries: 0 Opens: 136 Flush tables: 2 Open tables: 112 Queries per second avg: 0.070

Если вы получили такой результат, установка свежей версии MySQL прошла успешно!

MySQL - это одна из самых популярных систем управления базами данных, которая применяется почти везде, начиная от различных предприятий и промышленности и заканчивая организацией работы веб-сайтов.

Сейчас существует несколько версий MySQL. Непосредственно MySQL, разрабатываемая компанией Oracle и свободный форк от основного разработчика MySQL - MariaDB. Имя MairaDB программа получила в честь первой дочери программиста, также как и MySQL в честь имени второй. В большинстве дистрибутивов Linux используется MariaDB, в том числе и в Ubuntu. Но в этой статье давайте рассмотрим установку именно MySQL в Ubuntu 20.04.

Установка MySQL 8 в Ubuntu

Программа и все необходимые компоненты есть в официальных репозиториях, поэтому установить её не составит труда. Для установки из официальных репозиториев сначала обновите списки пакетов:

sudo apt update

Затем установите необходимые пакеты:

sudo apt install mysql-server mysql-client

На данный момент в репозиториях Ubuntu 20.04 есть уже версия Mysql 8.20. Вы можете проверить установленную версию такой командой:

Кроме того, желательно проверить, запущенна ли служба MySQL:

sudo systemctl status mysql

Вы должны увидеть зеленую надпись Active, Running и версию программы, которую устанавливали.

Установка MySQL 5.7 в Ubuntu

Если вам нужна версия 5.7, то её в репозиториях нет, но вы можете получить эту версию из репозитория разработчика. Если в системе уже есть более новая версия, её надо полностью удалить:

sudo apt remove --autoremove mysql-server mysql-client

Также удалите каталог с базами данных MySQL они не совместимы со старой версией:

sudo rm -Rf /var/lib/mysql

Для установки репозитория скачайте этот пакет:

Затем установите его:

sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb

В процессе установки программа попросит выбрать дистрибутив. Если у вас Ubuntu 20.04 или выше, выбирайте версию для Ubuntu 18.04 - bionic:

Затем выберите MySQL Server and Cluster:

После этого останется выбрать нужную версию MySQL, например 5.7:

После этого обновите списки репозиториев и посмотрите какие версии MySQL доступны:

sudo apt update

sudo apt-cache policy mysql-server

Осталось установить установить mysql 5.7 в Ubuntu:

sudo apt install mysql-server=5.7.31-1ubuntu18.04 mysql-community-server=5.7.31-1ubuntu18.04 mysql-client=5.7.31-1ubuntu18.04

В процессе установки программа запросит пароль для root пользователя:

После этого вы снова можете посмотреть версию:

Настройка mysql в Ubuntu

Перед тем как вы сможете полноценно использовать только что установленную базу данных, необходимо выполнить ее первоначальную настройку. Для этого был разработан специальный скрипт, выполните его:

На первом шаге настраивается плагин валидации пароля. Чтобы его включить нажмите Y, или его можно не включать. Затем надо задать сложность пароля, который позволит установить этот плагин. Здесь 0 означает слабый пароль, а 2 - сложный. Когда плагин будет настроен введите пароль root и подтвердите, что хотите использовать именно его:

Введите Y для отключения анонимного доступа к MySQL, затем ещё раз Y чтобы запретить подключаться к базе от имени root удаленно:

Снова Y, чтобы удалить тестовую базу данных. Затем, обновите привилегии для пользователей:

После завершения настройки вы можете подключиться к пользователя root к серверу баз данных из командной строки:

sudo mysql -u root

Здесь нам необходимо создать пользователя, от имени которого мы будем использовать базу данных, а также саму базу данных. Для этого воспользуемся командами SQL. Сначала создаем базу данных:

mysql> CREATE DATABASE testDB;

Далее создадим пользователя:

mysql> CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'password';

Слова my_user и password нужно заменить на свои имя пользователя и пароль. Дальше нужно дать права пользователю на управление этой базой данных:

mysql> GRANT ALL PRIVILEGES ON testDB.* TO 'my_user'@'localhost'

Или вы можете дать права только на несколько инструкций:

mysql> GRANT SELECT,UPDATE,DELETE ON testDB.* TO 'my_user'@'localhost';

Если какую-либо инструкцию нужно запретить, удалите ее:

mysql> REVOKE UPDATE ON testDB.* FROM 'my_user'@'localhost';

После завершения работы с правами нужно их обновить:

mysql> FLUSH PRIVILEGES;

Чтобы убедиться что нет никого лишнего, вы можете вывести список пользователей:

Также вы можете посмотреть полномочия для нужного пользователя:

mysql> SHOW GRANTS FOR 'my_user'@'localhost';

Теперь установка MySQL Ubuntu 20.04 полностью завершена и вы можете использовать эту базу данных для решения своих задач.

Удаление MySQL в Ubuntu

Чтобы удалить mysql Ubuntu 20.04 понадобиться немного больше команд чем для удаления простого пакета. После удаления основных пакетов в системе остается еще много файлов. Мы рассмотрим как удалить все.

Сначала остановите сервисы:

sudo systemctl stop mysql
sudo killall -KILL mysql mysqld_safe mysqld

Удалите основные пакеты и их зависимости:

sudo apt -y purge mysql-server mysql-client
sudo apt -y autoremove --purge
sudo apt autoclean

Удалите пользователя mysql и остатки программы в системе:

deluser --remove-home mysql
sudo delgroup mysql
rm -rf /etc/apparmor.d/abstractions/mysql /etc/apparmor.d/cache/usr.sbin.mysqld /etc/mysql /var/lib/mysql /var/log/mysql* /var/log/upstart/mysql.log* /var/run/mysqld
updatedb

Удалите все логи подключений к mysql из терминала:

sudo find / -name .mysql_history -delete

Теперь ваша система полностью очищена от MySQL.

Выводы

В этой статье мы рассмотрели как выполняется установка MySQL в Ubuntu 20.04. Как видите, это не очень трудно, хотя и требует некоторых знаний и немного времени на то, чтобы со всем разобраться. Надеюсь, эта информация была для вас полезной.


Подготовка

Любое обновление сервера баз данных скорее всего связано с перенастройкой базы: изменений требований к лимитам на системные ресурсы и исправлением конфигов базы, которые надо очистить от устаревших директив.

Перед обновлением мы обязательно обратимся к официальной документации:

ВАЖНО! Процедура обновления MySQL-кластера на базе Galera имеет свои тонкости, которые в статье не описаны. Не стоит использовать эту инструкцию в таком случае.

Часть 1: Проверка конфигов

Наш итог — удаление следующих директив:

  • query_cache_type , query_cache_limit и query_cache_size ;
  • innodb_file_format и innodb_file_format_max .


Итог: либо в логах Docker, либо в директории с логами — в зависимости от ваших конфигов — появится файл, в котором будут описаны проблемные директивы.

Вот что было у нас:


Таким образом, нам потребовалось еще разобраться с кодировками и заменить устаревшую директиву expire-logs-days .

Часть 2: Проверка работающих установок

В документации по обновлению есть 2 утилиты для проверки базы на совместимость. Их использование помогает администратору проверить совместимость имеющейся структуры данных.

Начнём с классической утилиты mysqlcheck. Достаточно просто запустить:


Если проблемы не обнаружены, утилита завершится с кодом 0:


Кроме того, в современных версиях MySQL доступна утилита mysql-shell (в случае Percona это пакет percona-mysql-shell ). Она является заменой классическому клиенту mysql и совмещает в себе функции клиента, редактора SQL-кода и инструменты администрирования MySQL. Для проверки сервера перед обновлением можно через неё выполнить следующую команду:


И вот какие замечания мы получили:


В общем, ничего критичного — только предупреждения о кодировках (см. ниже). Общий результат выполнения:


Мы решили, что обновление должно пойти без проблем.

Часть 3: Обновление серверов

Что же может пойти не так, когда есть столь шикарный план. Прекрасно понимая, что нюансы всегда случаются, первый эксперимент мы провели на dev-кластере MySQL.

Как уже упоминалось, официальная документация освещает вопрос обновления MySQL-серверов с репликами. Суть сводится к тому, что сначала стоит обновлять все реплики (slave), так как MySQL 8 умеет реплицироваться с мастера версии 5.7. Некоторая сложность заключается в том, что у нас используется режим master <-> master, когда удалённый мастер находится в режиме read-only. То есть фактически боевой трафик поступает в один ЦОД, а 2-й является резервным.

Топология выглядит следующим образом:


Обновление должно начаться с реплик mysql replica dc 2, mysql master dc 2 и mysql replica dc 1, а закончиться — сервером mysql master dc 1. Для пущей надёжности мы остановили виртуальные машины, сделали их снапшоты, а непосредственно перед обновлением остановили репликацию командой STOP SLAVE . В остальном же обновление выглядит так:

  1. Каждую реплику перезапускаем, добавив в конфиги 3 опции: skip-networking , skip-slave-start , skip-log-bin . Дело в том, что обновление базы генерирует бинарные логи с обновлением системных таблиц. Данные директивы гарантируют, что в базе не будет изменения данных приложения, а в бинарные логи не попадет информация об обновлении системных таблиц. Это позволит избежать проблем при возобновлении репликации.
  2. Устанавливаем пакет percona-server-server . Важно отметить, что в версии MySQL 8 не требуется запускать команду mysqlupgrade после обновления сервера.
  3. После успешного старта еще раз перезапускаем сервер — уже без параметров, которые добавлялись в первом пункте.
  4. Убеждаемся, что репликация успешно работает: проверяем SHOW SLAVE STATUS и смотрим, что обновляются таблицы со счетчиками в базе приложения.

Не было печали — prod мы обновляли

Однако перенос успешного опыта dev на production не обошёлся без сюрпризов.

К счастью, сам процесс обновления начинается с реплик, поэтому, встретив сложности, мы остановили работы и восстановили реплику из снапшота. Исследование проблем перенесли на следующее утро. В логах оказались следующее записи:


Исследование архивов различных почтовых рассылок в Google привело к пониманию, что такая проблема возникает из-за бага MySQL. Хотя скорее это даже баг утилит mysqlcheck и mysqlsh .

Оказывается, в MySQL сменили способ представления данных для десятичных полей (int, tinyint и т.п.), поэтому внутри mysql-server используется другой способ их хранения. Если ваша база данных изначально была в версии 5.5 или 5.1, а затем вы обновлялись до 5.7, то, возможно, требуется произвести OPTIMIZE для некоторых таблиц. Тогда MySQL обновит файлы с данными, переведя их на актуальный формат хранения.

Также это можно проверить утилитой mysqlfrm :


Если field_type у вас равен 0, то в таблице используется старый тип — надо проводить OPTIMIZE . Однако, если стоит значение 246 — у вас уже новый тип. Подробнее с типами можно ознакомиться в коде.

Более того, в данном баге рассматривается вторая возможная причина, которая обошла нас стороной, — это отсутствие InnoDB-таблиц в системной таблице INNODB_SYS_TABLESPACES , если они, таблицы, создавались в версии 5.1. Чтобы избежать проблем при обновлении, можно воспользоваться приложенным SQL-скриптом.

Почему же у нас не возникло таких проблем на dev? База туда периодически копируется с production — таким образом, таблицы пересоздаются.

К сожалению, на реально работающей большой БД не получится просто взять и выполнить повсеместный OPTIMIZE . Здесь поможет percona-toolkit: для операции online OPTIMIZE отлично подходит утилита pt-online-schema-change.

Обновленный план стал получился таким:

  1. Провести оптимизацию всех таблиц.
  2. Провести обновление баз данных.


Обновление таблиц производится без продолжительных блокировок благодаря тому, что утилита создает новую временную таблицу, в которую копирует данные из основной таблицы. В момент, когда обе таблицы идентичны, исходная таблица блокируется и подменяется новой. В нашем случае тестовый запуск показал, что для обновления всех таблиц потребуется около суток, но при этом копирование данных вызывало слишком большую нагрузку на диски.

Чтобы этого избежать, на production мы добавили к команде аргумент --sleep со значением 10 — этот параметр регулирует длину ожидания после переноса пачки данных в новую таблицу. Так можно снизить нагрузку, если реально запущенное приложение требовательно к времени ответа.

После выполнения оптимизации обновление прошло успешно.

… но не до конца!

Уже через полчаса после обновления клиент пришел с проблемой. База работала очень странно: периодически начинались сбросы подключений. Вот как это выглядело в мониторинге:


На скриншоте виден пилообразный график, связанный с тем, что часть потоков MySQL-сервера периодически падали с ошибкой. В приложении появились ошибки:


Беглый осмотр логов выявил, что демон mysqld не мог получить требуемые ресурсы у операционной системы. Разбираясь с ошибками, мы обнаружили в системе «бесхозные» файлы политик apparmor:


Эти файлы образовались при обновлении на MySQL 5.7 пару лет назад и принадлежат удалённому пакету. Удаление файлов и перезапуск службы apparmor решил проблему:

В заключение

Любая, даже самая простая операция, может привести к неожиданным проблемам. И даже наличие продуманного плана не всегда гарантирует ожидаемый результат. Теперь в любые планы обновления у нашей команды входит еще и обязательная чистка лишних файлов, которые могли появиться в результате последих действий.

А этим не очень профессиональным графическим творчеством я бы хотел сказать огромное спасибо компании Percona за их отличные продукты!

Этичный хакинг и тестирование на проникновение, информационная безопасность

Сегодня MySQL 8.0 стала версией доступной для скачивания по умолчанию (предыдущей актуальной версией была MySQL 5.7). Т.е. теперь считается, что это готовая для использования в продакшене версия. Решение проблем, возникавших в процессе обновления, заняло у меня несколько часов – очень надеюсь, что эта заметка поможет вам сэкономить время.

Я обновлял MySQL до версии 8.0 в Windows. Но я вполне допускаю, что аналогичные ошибки будут возникать и в Linux.

Мой веб-сервер и СУБД MySQL установлены по этой инструкции. Если вы устанавливали другим способом, то у вам могут быть другие пути к папкам – учитывайте это.

Бэкап всех баз данных MySQL

Перед тем, как выполнить обновление, обязательно сделайте резервные копии! Файлы баз данных MySQL 5 и MySQL 8 не являются совместимыми в полной мере, и при запуске MySQL 8 происходит автоматическое изменение структуры файлов баз данных. Это означает, что если что-то пойдёт не так и вы захотите просто откатиться до MySQL 5, это может оказаться просто невозможным.

Я делаю бэкапы двумя способами:

  • экспорт всех баз данных в файл;
  • резервная копия файлов, в которых хранятся базы данных.

Экспорт всех баз данных можно сделать прямо в phpMyAdmin, для этого перейдите на главную страницу и выберите вкладку «Экспорт».

Рекомендую НЕ ставить галочку «Добавить выражение DROP DATABASE IF EXISTS», поскольку если файл получится большим, то его придётся импортировать в несколько этапов, а если там будет использоваться конструкция DROP DATABASE IF EXISTS, то при каждом начале импорта будут удаляться ранее принятые записи – т.е. будет невозможно довести операцию до конца.

Можно делать резервные копии и с помощью утилиты mysqldump. Особенности использования mysqldump в Windows:

  • не используйте PowerShell, используйте командную строку (в PowerShell не работает перенаправление вывода, обозначаемого символами > и <), для этого в PowerShell выполните команду
  • перейдите в каталог с программой, например, если она размещена в папке C:\Server\bin\mysql5.7\bin\, для этого выполните
  • файл mysqldump можно запускать без указания расширения файла, но указывайте текущую папку, т.е.:
  • не нужно создавать резервные копии следующих баз данных:
  • information_schema
  • mysql
  • performance_schema
  • sys

Второй вариант – это скопировать в безопасное место папку C:\Server\data\DB\data\. Чтобы это сделать, предварительно остановите MySQL следующей командой:

Само собой, нужно регулярно делать резервные копии, не только перед обновлением СУБД,

Решение ошибки «The server requested authentication method unknown to the client [caching_sha2_password]»

Эта ошибка появится не только при обновлении MySQL, но и при установке. Выглядит она примерно так:

Появляется в phpMyAdmin и в любом скрипте, который обращается к базе данных. Проблема заключается в том, что в настоящее время в PHP не реализовано расширение для работы с методом аутентификации caching_sha2.

Чтобы избежать эту ошибку, в конфигурационный файл my.ini добавьте директиву:

Пример рабочего файла, в котором есть все необходимый настройки для успешного запуска СУБД:

Обновление структуры файлов баз данных при переходе на MySQL 8

Даже после этого, в логах начинают появляться ошибки:

Видимо, с этим же связаны ошибки и предупреждения вроде таких:


Зависание MySQL 8 при обращении к некоторым базам данных

Это оказалось главным вызовом, после обновления с MySQL 5.7, в которой всё работало отлично. Зависания происходили и до, и после запуска mysql_upgrade. Достаточно было обратиться к некоторым базам данных, например, попробовать открыть в phpMyAdmin, либо посетить веб-сайт, который её использует.

Не помогало ничего, MySQL 8 зависала наглухо – служба не перезапускалась, помогала только перезагрузка компьютера, причём до первого обращения к проблемной БД.

Если у вас похожая проблема, и вы ещё не сделали резервную копию в виде .sql для импорта, то откатитесь до MySQL 5. В папку C:\Server\data\DB\data\ восстановите из резервной копии файлы старого формата.

После этого экспортируйте все базы данных в файл .sql. Когда этот файл готов, удалите MySQL 5, удалите содержимое C:\Server\data\DB\data\, установите MySQL 8 и инициализируйте её, как это происходит при первой установке:

После этого восстановите из резервной копии (файл .sql) все базы данных.

При таком способе переноса баз данных, проблема с зависанием полностью исчезла.

Восстановление баз данных из резервной копии без phpMyAdmin в Windows

Для экспорта баз данных, phpMyAdmin работает хорошо. Но с импортом возникло ряд проблем. Ниже я покажу, как разрешить все эти ошибки, но намного проще и в разы быстрее сделать импорт без phpMyAdmin и других помощников на PHP скриптах.

Для этого откройте командную строку Windows. Нажмите комбинацию WIN + x, затем выберите Windows PowerShell. Чтобы выйти из PowerShell и перейти в командную строку, выполните:

Затем смените текущую папку:

И запустите команду вида:

Например, моя резервная копия содержится в файле localhost.sql, который размещён в папке C:\Users\Alex\Downloads\, тогда команда выглядит так:

При попытке импортировать базы данных с помощью phpMyAdmin, у меня всё время возникала ошибка:


Сохраните и закройте файл.

Если я правильно понимаю код, идёт проверка формата файла и если формат не соответствует указанному в списке, то программа останавливает работу. У меня эта проблема была для sql файла, сжатого в zip архив. Возможно, достаточно было добавить в список форматов zip.

Решение проблемы с ошибкой «import.php: Отсутствующий параметр: import_type»

Затем сразу возникла проблема:

максимальный размер загружаемого на сервер файла. Изначально установлен очень маленький размер – только два мегабайта. Например, при загрузке базы данных в phpMyAdmin, не получится загрузить файл больше 2 мегабайт до тех пор, пока не будет изменён этот пункт настройки. Мой бэкап был в сотни мегабайт – установите это значение больше, чем размер импортируемого файла.

устанавливает максимальное количество данных, которые будут приняты при отправке методом POST. Аналогично – установите размер больше, чем импортируемый файл.

Другие директивы можно не менять, но при желании вы можете предоставить PHP скриптам дополнительные ресурсы:

устанавливает максимальное количество памяти, которое может использовать скрипт

максимальное количество файлов для загрузки за один раз

максимальное время выполнения одного скрипта

устанавливает кодировку (по умолчанию, строка закомментирована)

Чтобы эти изменения вступили в силу, нужно перезапустить веб-сервер.

Заключение

Это не все ошибки phpMyAdmin: после решения указанных выше проблем, phpMyAdmin стал жаловаться, что в моём бэкапе неверный формат команд. В общем, импортируйте базы данных напрямую в MySQL. Если баз данных много и они большие, по сравнению с phpMyAdmin, скорость импорта будет в разы быстрее.

Итак, резюмируем, для обновления с MySQL 5.* до MySQL 8.*:

  • делаем резервную копию баз данных
  • после установки MySQL 8 запускаем программу для обновления формата файлов
  • если появились зависания или другие проблемы в работе, останавливаем СУБД, удаляем файлы баз данных, инициализируем MySQL, чтобы были созданы дефолтные файлы и импортируем базы данных из резервной копии

Если аналогичные проблемы возникнут на Linux, указанные рецепты также должны помочь.

Если вы только собираетесь установить веб-сервер на Windows, то подробная инструкция здесь.

Если вам нужен отличный хостинг, то он здесь. Я хостю там сайты с 2009 года и с каждый годом люблю этого хостера больше и больше! Объективно лучший хостинг по показателям аптайма и скорости работы. Если вы хотите зарегистрировать домен в любой существующей доменной зоне – на выбор сотни тематических доменных зон.

Потрясающая отзывчивая и профессиональная служба поддержки и бесплатный перенос сайтов – вливайтесь в клуб любителей Hostland.

Читайте также: