Home Database How To Install MySQL In Ubuntu Linux
How To Install MySQL in Ubuntu Linux

How To Install MySQL In Ubuntu Linux

By sk
218 Views

In this guide, you will learn how to install MySQL in Ubuntu Linux, and then how to set MySQL root user password, and finally how to access MySQL server as root user.

All steps given below are tested on a freshly installed Ubuntu 20.04 LTS server edition.

Prerequisites

Before installing MySQL, make sure your Ubuntu system is updated with latest packages:

$ sudo apt update
$ sudo apt upgrade

Once all updates are installed, reboot your system:

$ sudo reboot

1. Install MySQL in Ubuntu Linux

MySQL is available in the default repositories of Ubuntu Linux. To install MySQL in Ubuntu Linux, run:

$ sudo apt install mysql-server

This command installs all necessary components to setup a MySQL database server in Ubuntu.

To check the MySQL version, run:

$ mysql --version

Or use capital V:

$ mysql -V

Sample output:

mysql  Ver 8.0.25-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

1.1. Start, restart and stop MySQL service

In Ubuntu, MySQL service is automatically started once the MySQL server is installed. To verify if the MySQL service is started or not, run:

$ sudo systemctl status mysql

Sample output:

● mysql.service - MySQL Community Server
      Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
      Active: active (running) since Wed 2021-05-26 10:55:17 UTC; 4min 26s ago
    Main PID: 1520 (mysqld)
      Status: "Server is operational"
       Tasks: 37 (limit: 2280)
      Memory: 332.8M
      CGroup: /system.slice/mysql.service
              └─1520 /usr/sbin/mysqld
 May 26 10:55:15 ubuntu2004.localdomain systemd[1]: Starting MySQL Community Server…
 May 26 10:55:17 ubuntu2004.localdomain systemd[1]: Started MySQL Community Server.
Check MySQL service status in Ubuntu Linux
Check MySQL service status in Ubuntu Linux

As you can see, MySQL service is loaded and running! If it is not started for any reason, you can start MySQL service using command:

$ sudo systemctl start mysql

To enable MySQL to start automatically on every reboot, run:

$ sudo systemctl enable mysql

To restart MySQL service, run:

$ sudo systemctl restart mysql

2. Set MySQL root user password

By default, MySQL root password is blank, which is not recommended in production. You must set a strong and unique database administrative user i.e. root user password. MySQL ships with a script named mysql_secure_installation to remove insecure default settings and secure the database server.

The mysql_secure_installation script will do the following:

  • Setup VALIDATE PASSWORD COMPONENT,
  • If VALIDATE PASSWORD COMPONENT is enabled, set your preferred password validation policy,
  • Remove anonymous users,
  • Disallow root user login remotely,
  • Remove test database and remove the privileges on test database,
  • Finally reload privilege tables.

Now let us run this script:

$ sudo mysql_secure_installation

When you run this command for the first time after MySQL installation, you will be connected to MySQL with a blank password. Then, you will be prompted if you want to setup VALIDATE PASSWORD PLUGIN.

The VALIDATE PASSWORD PLUGIN is used to test passwords and improve security. It checks the password strength and allows the users to set only those passwords which are secure enough. Setting up VALIDATE PASSWORD COMPONENT is optional. It is safe to leave it disabled. However, I recommend you to use strong and unique passwords when creating user roles. If you don't want to enable VALIDATE PASSWORD PLUGIN, simply press any key to skip the password validation part and continue the rest of the steps.

I want to use this VALIDATE PASSWORD PLUGIN, so I entered y for yes:

 Securing the MySQL server deployment.

 Connecting to MySQL using a blank password.

 VALIDATE PASSWORD COMPONENT can be used to test passwords
 and improve security. It checks the strength of password
 and allows the users to set only those passwords which are
 secure enough. Would you like to setup VALIDATE PASSWORD component?

 Press y|Y for Yes, any other key for No: y

If you choose yes, you will prompted to choose a password policy level. There are three password validation policies are available. They are LOW, MEDIUM and STRONG. Each password policy contains a set of password rules that you should use when creating new database roles. For example if you choose MEDIUM, the password should contain at least 8 characters long including a number, a lowercase and uppercase letters, and a special character. Choose any password policy that suits you.

I go with LOW level password policy, so I choose 0 (zero):

 There are three levels of password validation policy:

 LOW    Length >= 8
 MEDIUM Length >= 8, numeric, mixed case, and special characters
 STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

 Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 

Next enter the MySQL root user password twice. After entering the password, the password strength score will be displayed. In my case, I got 100. If the password strength is OK for you, press y to continue with the given password. Else, type another strong password and then press Y to continue.

 Please set the password for root here.

 New password: 

 Re-enter new password: 

 Estimated strength of the password: 100 
 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

Please don't confuse this with your system's root account. It is an administrative account for our database server.

Next, press y and hit ENTER to accept the defaults for all subsequent questions. This will remove anonymous user, disallow root login remotely and remove the test databases.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done! 

We have set MySQL root user password.

Did you forget your MySQL root password? No problem! You can easily reset root password in MySQL as described in the following links:

3. Login to MySQL

To login to MySQL server as root user, simply run:

$ sudo mysql

Enter your user's password to access the MySQL prompt:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
Login to MySQL as root user in Ubuntu Linux
Login to MySQL as root user in Ubuntu Linux

Start creating the user roles and databases for your projects. We will cover it in a separate guide soon.

To view the help section, type help or \h and press ENTER key:

mysql> help

To exit from MySQL prompt and return back to your Terminal, run:

mysql> exit

4. Change authentication method for MySQL root user

Did you notice that I logged into the MySQL server without providing the MySQL root user's password. I simply entered the password of my system user account, but not the MySQL root user's password. This is because MySQL root user uses auth_socket plugin to authenticate with MySQL server in Ubuntu systems running MySQL 5.7 and later versions.

The auth_socket plugin authenticates clients that connect to the MySQL server from the local host through the Unix socket file. So you can't authenticate to the MySQL server as root user by providing a password.

If you want to use password authentication for MySQL root user, you need to reconfigure the MySQL server to use a different authentication method as described in the following article.

>> Change Authentication Method For MySQL Root User In Ubuntu

Conclusion

In this guide, we learned to install MySQL in Ubuntu Linux operating system. We also learned how to set MySQL root user password and how to access or connect to the MySQL server as root user.

You May Also Like

1 comment

jordan May 27, 2021 - 11:10 pm

using the “expect” tool uou can automate the mysql configuration with a script. like here:
https://gist.github.com/Mins/4602864

Reply

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More