How To Install MySQL 8.0 on Fedora 36/35/34/33/32

Posted on 112 views

In this guide, we will cover how to install MySQL 8.0 on Fedora 36/35/34/33/32 Server or Workstation. If you have an old version of MySQL Server (e.g 5.7), you may need to do an in-place upgrade or dump all data, upgrade packages and re-import all database data to new MySQL 8.0 installed.

Our recent MySQL 8.0 installation guide was for Ubuntu: How to Install MySQL 8.0 on Ubuntu. The version of MySQL available via Fedora Modular repository is MySQL 5.7.

For a complete LAMP Stack on Fedora, check How to install LAMP Stack on Fedora

One dependency for this setup is an installed and running instance of Fedora Linux distribution. See How to install Fedora on Physical Server / Virtual Environment

Step 1: Add MySQL 8.0 community repository

To install MySQL 8.0 on Fedora, you need to add MySQL 8.0 community repository.

Add MySQL 8.0 repository to Fedora:

### Fedora 36 ###
sudo dnf -y install https://dev.mysql.com/get/mysql80-community-release-fc36-1.noarch.rpm

### Fedora 35 ###
sudo dnf -y install https://dev.mysql.com/get/mysql80-community-release-fc35-3.noarch.rpm

### Fedora 34 ###
sudo dnf -y install https://dev.mysql.com/get/mysql80-community-release-fc34-3.noarch.rpm

### Fedora 33 ###
sudo dnf -y install https://dev.mysql.com/get/mysql80-community-release-fc33-2.noarch.rpm

### Fedora 32 ###
sudo dnf -y install https://dev.mysql.com/get/mysql80-community-release-fc32-1.noarch.rpm

### Fedora 31 ###
sudo dnf -y install https://repo.mysql.com//mysql80-community-release-fc31-1.noarch.rpm

This will write a repository file to /etc/yum.repos.d/mysql-community.repo

$ cat /etc/yum.repos.d/mysql-community.repo
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/fc/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/fc/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql-tools-community]
name=MySQL Tools Community
baseurl=http://repo.mysql.com/yum/mysql-tools-community/fc/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql-tools-preview]
name=MySQL Tools Preview
baseurl=http://repo.mysql.com/yum/mysql-tools-preview/fc/$releasever/$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

Step 2: Install MySQL Server 8.0 on Fedora

Once you have added the repository and confirm to be enabled, proceed to install MySQL 8.0 onto your Fedora by running:

sudo dnf install mysql-community-server

Proceed with the installation process of MySQL 8.0 on Fedora:

Transaction Summary
======================================================================================================================================================================================================
Install  69 Packages

Total download size: 56 M
Installed size: 324 M
Is this ok [y/N]: y

After installation, the package info can be seen from:

$ rpm -qi mysql-community-server
Name        : mysql-community-server
Version     : 8.0.30
Release     : 10.fc36
Architecture: x86_64
Install Date: Fri 09 Sep 2022 04:34:51 PM UTC
Group       : Unspecified
Size        : 112100447
....

Step 3: Configure MySQL server on Fedora

After installation of MySQL 8.0 on Fedora, you need to do initial configuration to secure it.

1. Start and enable mysqld service:

sudo systemctl start mysqld.service
sudo systemctl enable mysqld.service

2. Copy the generated random password for the root user

sudo grep 'A temporary password' /var/log/mysqld.log |tail -1

Take note the printed password:

A temporary password is generated for [email protected]: 1ph/axo>vJe;

3. Start MySQL Secure Installation to change the root password, Disallow root login remotely, remove anonymous users and remove test database.

$ sudo mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root:

Authenticate with your generated temporary password. Then configure your MySQL 8.0 installation like below:

Change the password for root ? ((Press y|Y for Yes, any other key for No) : Yes

New password: 
Re-enter new password: 

Estimated strength of the password: 100 
Do you wish to continue with the password provided?: Yes

Remove anonymous users?: Yes
Success.

Disallow root login remotely? : Yes
Success.

Remove test database and access to it? : Yes
 - Dropping test database...
Success.
 - Removing privileges on test database...
Success.

Reload privilege tables now? (Press y|Y for Yes) : Yes
Success.

All done!

4. Connect to MySQL Database as root user and create a test database.

$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.30

Copyright (c) 2000, 2022, 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> SELECT version();
+-----------+
| version() |
+-----------+
| 8.0.30    |
+-----------+
1 row in set (0.00 sec)

Create a test database and user

mysql> CREATE DATABASE test_db;
Query OK, 1 row affected (0.09 sec)

mysql> CREATE USER 'test_user'@'localhost' IDENTIFIED BY "Strong34S;#";
Query OK, 0 rows affected (0.04 sec)

mysql> GRANT ALL PRIVILEGES ON test_db.* TO 'test_user'@'localhost';
Query OK, 0 rows affected (0.02 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)

This test database and user can be dropped by running:

mysql> DROP DATABASE test_db;
Query OK, 0 rows affected (0.14 sec)

mysql> DROP USER 'test_user'@'localhost';
Query OK, 0 rows affected (0.11 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

mysql> QUIT
Bye

Step 4: Configure Firewall for remote connections

To allow for remote connections, allow port 3306 on the firewall

sudo firewall-cmd --add-service=mysql --permanent
sudo firewall-cmd --reload

You can also limit access from trusted networks

sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" \
service name="mysql" source address="10.1.1.0/24" accept'

Thanks for installing MySQL 8.0 on Fedora with our guide. Until next time, stay tuned.

coffee

Gravatar Image
A systems engineer with excellent skills in systems administration, cloud computing, systems deployment, virtualization, containers, and a certified ethical hacker.