Read more

Install MySQL 5.6 in Ubuntu 16.04

Tobias Kraze
May 02, 2016Software engineer at makandra GmbH

Instead of using this hack you might want to use MariaDB 10.x which can work with both old and new apps.


Illustration book lover

Growing Rails Applications in Practice

Check out our e-book. Learn to structure large Ruby on Rails codebases with the tools you already know and love.

  • Introduce design conventions for controllers and user-facing models
  • Create a system for growth
  • Build applications to last
Read more Show archive.org snapshot

An alternative could be to use the MySQL Docker image Show archive.org snapshot which is still updated for 5.6.


Ubuntu 16.04 only provides packages for MySQL 5.7 which has a range of backwards compatibility issues with code written against older MySQL versions.

Oracle maintains a list of official APT repositories for MySQL 5.6, but those repositories do not yet support Ubuntu 16.04. However, the 15.10 repos will work for 16.04.

I would not recommend to do this in production environment, but on a development machine, follow these steps:

  • Dump your databases, if you want to keep them. Keeping the data directory itself did not work for me.

  • Uninstall everything related to MySQL 5.7 with

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

    Check if you removed everything using

    dpkg -l | grep mysql
    

    Purge remainders (e.g. marked with rc) with dpkg -P <package> [<package> ...].

  • Download the apt_config-debian package from Oracle Show archive.org snapshot and install it using

    dpkg -i mysql-apt-config_0.7.2-1_all.deb
    

    Choose "MySQL 5.6" and "Ubuntu Wily" (assuming Xenial is not yet provided)

  • Run

    apt-cache policy mysql-server  
    

    If this shows a 5.6 version, continue.

    If not, check your /etc/apt/sources.list.d/mysql.list. It should look roughly like this:

    ### THIS FILE IS AUTOMATICALLY CONFIGURED ###
    # You may comment out entries below, but any other modifications may be lost.
    # Use command 'dpkg-reconfigure mysql-apt-config' as root for modifications.
    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
    

    You might have to replace "xenial" with "wily". Although you are using 16.04 (codename Xenial), Oracle currently seems to only provide 5.6 in the repos for 14.04 (codename Wiley). But those sources work for 16.04, too.

  • Create a file /etc/apt/preferences.d/mysql with this content

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

    apt update
    
  • Run

    apt install mysql-client mysql-server libmysqlclient-dev
    

    You should get 5.6 versions.

In case you have installed and MySQL ruby gems (like mysql2), you will have to remove and reinstall them, since they have been linked to the old libraries. Note that gem pristine will not help.

Tobias Kraze
May 02, 2016Software engineer at makandra GmbH
Posted by Tobias Kraze to makandra dev (2016-05-02 12:21)