Introduction

MySQL is an open-source relational database server tool for Linux operating systems.

It is widely used in modern web-based technology, and it forms part of the popular “LAMP” stack of software.  The LAMP stack includes the Linux operating system, Apache web services, MySQL database (or sometimes MariaDB), and the PHP programming language.

This setup guide will help you install MySQL on Ubuntu 18.04.

Prerequisites

  • A system running Ubuntu 18.04
  • Access to a user account with sudo privileges
  • Internet access

This guide assumes you’re installing to a local system. If you need to set up encryption or security certificates for configuring a remote server, please refer to this guide.

Tools/Software

  • Terminal window (ctrl-alt-T)
  • APT package manager (installed by default)

Installation of MySQL On Ubuntu

Step 1: Download the MySQL Repositories

Your installation of Ubuntu 18.04 may not have access to the repositories for MySQL.  To get them, open a terminal window and enter the following:

wget –c https://dev.mysql.com/get/mysql-apt-config_0.8.11-1_all.deb

The system should respond by reaching out to the server and downloading the .deb configuration file.  It should display a progress bar to let you know when it’s complete.

NOTE

The –c option will direct the system to resume the download if it’s interrupted. Also, it’s possible that a newer apt-config file has been published since this document was written. You can find the link to the latest file on the MySQL downloads page.

Step 2: Install the MySQL Repositories

In the terminal window, enter the following:

sudo dpkg –i mysql-apt-config_0.8.10-1_all.deb

The system should respond by launching an installation configuration tool.  It will present options to you for which MySQL version you want to install, and any other tools.  Leave the default settings and click OK, unless you’re an advanced user and have a specific reason to change them.

Step 3: Refresh the Repositories

Any time you’re installing new software, you should refresh the software cache.  This ensures that you are installing the latest release with the most up-to-date patches.  For a popular database utility like MySQL, this is especially important for the security of your database.  In the terminal, enter the following:

sudo apt-get update

The system should take a few moments and refresh the repository cache.

NOTE

This step configures your system to load MySQL 8 software directly from the source. You won’t be able to use Ubuntu’s native repositories to load MySQL software until this repository is disabled.

Step 4: Install MySQL

Run the commands:

sudo apt-get install mysql-server

Enter your administrator credentials, and the system will install the MySQL server package, client packages, and database common files.

The installation will prompt you to enter and confirm a root user and password for the MySQL database.  This password grants total access to the database, so it should be secure and private.

Next, the installer will display a notice about a new authentication method.  Essentially, the newer authentication is more secure but may cause compatibility problems with older MySQL clients.  Click OK, then on the next screen select the authentication method you want to use, then click OK again.

Step 5: Set up MySQL Security

By default, MySQL lacks some of the basic and important security features.  Luckily, it comes with an installation script that walks you through the configuration.  At the terminal, enter the following:

sudo mysql_secure_installation

The system will prompt you for the MySQL root password.  Enter the password you set in Step 4.

Step 5a: Validate Password Plugin

Next, the installer will describe the features of the Validate Password plugin.  This plugin checks to make sure that any new passwords are strong/complex enough.  Type “y” to enable, or “n” to disable.  This is your choice, but enabling this plugin is more secure.

The Validate Password plugin has three settings for passwords:

  • Low: passwords must be at least 8 characters
  • Medium (default): passwords must have 1 uppercase, 1 lowercase, 1 numeric, and 1 special character
  • Strong: compares the password to a dictionary file to prevent dictionary attacks

NOTE

For more information on the Validate Password plugin, please see the documentation.

Step 5b: (optional) Change Root Password

Next, the installer will offer you the chance to change the password for root. Type “y” to change the password, or “n” to keep the same password you set in Step 4. If you do change the password, it will need to follow any requirements you configured in Step 5a.

Step 5c: Configure MySQL Security

The system will prompt you for the following security features. It is recommended that you enable (type “y”) all of them, unless you have a reason to keep them disabled.

  • Remove anonymous users?
  • Disallow root login remotely?
  • Remove test database and access to it?
  • Reload privilege tables now?

Step 6: Start, Stop, or Check Status of MySQL Service

In Ubuntu, the MySQL service should be started automatically.  You can check to make sure it’s running by entering the following command line into the terminal:

sudo service mysql status

To stop the service, enter the following:

sudo service mysql stop

To start the service, enter the following:

sudo service mysql start

Step 7: Launch MySQL to Enter Commands

Many MySQL commands can be entered from the MySQL command shell.  This is very similar to a terminal window, but the commands are issued directly to the MySQL service.  From a regular terminal window, enter the following:

sudo mysql –u root –p

The system should prompt for a password, then give an introduction to the MySQL shell.  The command prompt will change to look like this:

mysql>

Conclusion

At this point, you should have MySQL 8 installed on your Ubuntu server, with basic security controls.

You can run additional database tasks through the MySQL shell, as described in Step 7.  Or, you can install other plugins or tools to manage your database.

One popular tool for managing MySQL is phpMyAdmin. View our tutorial on Installing PhpMyAdmin On Ubuntu 18.04.

Another task includes moving the MySQL data directory to a new location to prevent attackers from guessing the location of your files.

Also, by default MySQL only allows local access.  You can configure SSL/TLS for MySQL to enable secure, encrypted remote access to the database.