In this guide, we will cover how to install MySQL 8.0 on Fedora 32/31 / Fedora 30 / Fedora 29 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 32/31/30/29, you need to add MySQL 8.0 community repository:

Add MySQL 8.0 repository to Fedora 32/31

### Fedora 32 ###
sudo dnf -y install

### Fedora 31 ###
sudo dnf -y install

Add MySQL 8.0 repository to Fedora 30

Run the commands.

sudo dnf -y install

Add MySQL 8.0 repository to Fedora 29

Run the following command on your Fedora 29 terminal:

sudo dnf -y install

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

Step 2: Install MySQL Server 8.0 on Fedora 32/31/30/29

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

sudo dnf -y install mysql-community-server

After installation, the package info can be seen from:

$ dnf info mysql-community-server
Last metadata expiration check: 0:40:41 ago on Sun 04 Nov 2018 09:55:41 AM UTC.
Installed Packages
Name         : mysql-community-server
Version      : 8.0.13
Release      : 1.fc29
Arch         : x86_64
Size         : 1.8 G
Source       : mysql-community-8.0.13-1.fc29.src.rpm
Repo         : @System
From repo    : mysql80-community
Summary      : A very fast and reliable SQL database server
URL          :
License      : Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Under GPLv2 license as shown in the Description field.
Description  : The MySQL(TM) software delivers a very fast, multi-threaded, multi-user,
             : and robust SQL (Structured Query Language) database server. MySQL Server
             : is intended for mission-critical, heavy-load production systems as well
             : as for embedding into mass-deployed software. MySQL is a trademark of
             : Oracle and/or its affiliates
             : The MySQL software has Dual Licensing, which means you can use the MySQL
             : software free of charge under the GNU General Public License
             : ( You can also purchase commercial MySQL
             : licenses from Oracle and/or its affiliates if you do not wish to be bound by the terms of
             : the GPL. See the chapter "Licensing and Support" in the manual for
             : further info.
             : The MySQL web site ( provides the latest news and
             : information about the MySQL software.  Also please see the documentation
             : and the manual for more information.
             : This package includes the MySQL server binary as well as related utilities
             : to run and administer a MySQL server.

Step 3: Configure the MySQL server on Fedora 32/31/30/29

After installation of MySQL 8.0 on Fedora 32/31/30/29, 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

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

Disallow root login remotely? : Yes

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

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

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 19
Server version: 8.0.13 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

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

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

mysql> SELECT version();
| version() |
| 8.0.13    |
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)

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

Step 4: Configure Firewall

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="" accept'

Thanks for installing MySQL 8.0 on Fedora 32/31/30/29 with our guide. Until next time, stay tuned.

MySQL Learning courses:

Other MySQL articles:

How To Install MySQL 5.7 on Fedora

How to convert all MySQL tables from MyISAM into InnoDB Storage engine

How to solve “MySQL server is running with the –secure-file-priv” Error

How to find database sizes in MySQL/MariaDB Database Server

Your support is our everlasting motivation,
that cup of coffee is what keeps us going!

As we continue to grow, we would wish to reach and impact more people who visit and take advantage of the guides we have on our blog. This is a big task for us and we are so far extremely grateful for the kind people who have shown amazing support for our work over the time we have been online.

Thank You for your support as we work to give you the best of guides and articles. Click below to buy us a coffee.


Please enter your comment!
Please enter your name here