How to Install MySQL on AlmaLinux 8

MySQL is a freely available open source Relational Database Management System (RDBMS) that uses Structured Query Language (SQL). SQL is the most popular language for adding, accessing and managing content in a database. It is most noted for its quick processing, proven reliability, ease and flexibility of use.

Install MySQL

To install MySQL by running the following commands.

dnf install @mysql

Output:

[[email protected] ~]# dnf install @mysql
Last metadata expiration check: 0:09:24 ago on Thu 25 Feb 2021 12:06:21 PM EST.
Dependencies resolved.
================================================================================
 Package                      Arch   Version                    Repo       Size
================================================================================
Installing group/module packages:
 mysql-server                 x86_64 8.0.21-1.module_el8.3.0+2049+47abd494
                                                                appstream  22 M
Installing dependencies:
 checkpolicy                  x86_64 2.9-1.el8                  baseos    347 k
 libaio                       x86_64 0.3.112-1.el8              baseos     32 k
 mariadb-connector-c-config   noarch 3.1.11-2.el8_3             appstream  14 k
 mecab                        x86_64 0.996-1.module_el8.3.0+2049+47abd494.9

Start the MySQL service and enable it to automatically start on boot by running the following command.

systemctl enable --now mysqld

systemctl start mysqld

To check the MySQL service by running the following command.

systemctl status mysqld

Output:

[[email protected] ~]# systemctl status mysqld
● mysqld.service - MySQL 8.0 database server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor pres>
   Active: active (running) since Thu 2021-02-25 12:19:01 EST; 16s ago
  Process: 7821 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, st>
  Process: 7695 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (>
  Process: 7670 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, stat>
 Main PID: 7777 (mysqld)
   Status: "Server is operational"
    Tasks: 39 (limit: 11451)
   Memory: 432.1M
   CGroup: /system.slice/mysqld.service
           └─7777 /usr/libexec/mysqld --basedir=/usr

Securing MySQL

Finally, you will want to secure your MySQL installation by issuing the following command.

mysql_secure_installation

Output:

[[email protected] ~]# mysql_secure_installation

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:
Please set the password for root here.

New password:

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!

Once secured, you can connect to MySQL and review the existing databases on your database server by using the following command.

mysql -e "SHOW DATABASES;" -p

Output:

[[email protected] ~]# mysql -e "SHOW DATABASES;" -p
Enter password:
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

Done!