Установка MySQL 5.6 на Ubuntu 16.04

Очередная короткая заметка о том, как вернуть MySQL 5.6 на Ubuntu 16.04.

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

Далее удалите все пакеты MySQL 5.7:

 apt remove mysql-client mysql-server libmysqlclient-dev mysql-common

Проверьте, все ли пакеты удалены:

dpkg -l | grep mysql

Если что-то осталось, удалите их с помощью следующей команды:

dpkg -P <package> [<package> ...]

Теперь скачайте apt_config-debian package из репозитория Oracle и установите его с помощью dpkg:

wget https://repo.mysql.com/mysql-apt-config_0.7.2-1_all.deb
dpkg -i mysql-apt-config_0.7.2-1_all.deb

Я установил именно версию 0.7.2-1_all. Во время установки выберите «MySQL 5.6» и дистрибутив «Ubuntu Wily».

Теперь проверим статус пакета MySQL:

apt-cache policy mysql-server 

Если в списке нет версии 5.6, то проверьте файл /etc/apt/sources.list.d/mysql.list , вы должны увидеть там это:

deb http://repo.mysql.com/apt/ubuntu/ wily mysql-apt-config
deb http://repo.mysql.com/apt/ubuntu/ wily mysql-5.6
deb http://repo.mysql.com/apt//ubuntu/ wily mysql-tools
deb-src http://repo.mysql.com/apt/ubuntu/ wily mysql-5.6

Возможно вам придется заменить «xenial» на «wily». Не смотря на то, что вы используете Ubuntu 16.04 (кодовое имя которого xenial), Oracle обеспечивает сервером 5.6 только дистрибутивы 14.04 (кодовое имя которого willy). Но эти источники так же работают на 16.04.

Далее, создаем файл /etc/apt/preferences.d/mysql вписав в него следующие строки:

Package: *
Pin: origin "repo.mysql.com"
Pin-Priority: 999

Чтобы не было ошибок типа:

Ошк:8 http://repo.mysql.com/apt/ubuntu wily InRelease
Следующие подписи неверные: KEYEXPIRED 1487236823 KEYEXPIRED 1487236823 KEYEXPIRED 1487236823

Ошк:11 http://repo.mysql.com/apt//ubuntu wily InRelease
Следующие подписи неверные: KEYEXPIRED 1487236823 KEYEXPIRED 1487236823 KEYEXPIRED 1487236823

Чтение списков пакетов… Готово
W: http://repo.mysql.com/apt/ubuntu/dists/wily/InRelease: При подписи ключом A4A9406876FCBD3C456770C88C718D3B5072E1F5 используется нестойкий алгоритм свёртки (SHA1)
W: Ошибка GPG: http://repo.mysql.com/apt/ubuntu wily InRelease: Следующие подписи неверные: KEYEXPIRED 1487236823 KEYEXPIRED 1487236823 KEYEXPIRED 1487236823
E: Репозиторий «http://repo.mysql.com/apt/ubuntu wily InRelease» не подписан.
N: Обновление из этого репозитория нельзя выполнить безопасным способом, и поэтому по умолчанию он отключён.
N: Смотрите справочную страницу apt-secure(8) о создании репозитория и настройке пользователя.
W: http://repo.mysql.com/apt//ubuntu/dists/wily/InRelease: При подписи ключом A4A9406876FCBD3C456770C88C718D3B5072E1F5 используется нестойкий алгоритм свёртки (SHA1)
W: Ошибка GPG: http://repo.mysql.com/apt//ubuntu wily InRelease: Следующие подписи неверные: KEYEXPIRED 1487236823 KEYEXPIRED 1487236823 KEYEXPIRED 1487236823
E: Репозиторий «http://repo.mysql.com/apt//ubuntu wily InRelease» не подписан.
N: Обновление из этого репозитория нельзя выполнить безопасным способом, и поэтому по умолчанию он отключён.
N: Смотрите справочную страницу apt-secure(8) о создании репозитория и настройке пользователя.
W: https://download.01.org/gfx/ubuntu/16.04/main/dists/xenial/InRelease: При подписи ключом 09D6EF97BFB38E916EF060E756A3DEF863961D39 используется нестойкий алгоритм свёртки (SHA1)

Ищем просроченный ключ так:

apt-key list | grep expired

или так (если система Русская):

  apt-key list | grep просрочен 

В ответ мы получим подобное сообщение:

 pub 1024D/5072E1F5 2003-02-03 [просрочен с: 2017-02-16]

и обновим его:

sudo apt-key adv --recv-keys --keyserver keys.gnupg.net 5072E1F5 

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

apt update

И ставим заветный MySQL 5.6:

apt install mysql-client mysql-server libmysqlclient-dev

Проверить версию можно так:

 mysql --version
mysql Ver 14.14 Distrib 5.6.35, for debian-linux-gnu (x86_64) using EditLine wrapper

Еще, обратите внимание, если вы ставили ruby gems (например mysql2), вам нужно будет удалить и установить их по новой, так как они были привязаны к предыдущей библиотеке, и gem pristine тут не поможет.

Источники и прочее чтиво, которое использовалось для написания этой заметки: