MySQL is an open source relational database management system whose development is made possible by Oracle Corporation. The software is released under the GNU General Public License terms. In this guide, we will cover how to install MySQL 8.0 on Fedora 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.4 or 8.0 installed.

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

Add MySQL 8.x community repository

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

Add MySQL 8 repository to Fedora:

Execute the following commands from the terminal to install MySQL repository.

### Fedora 42 ###
sudo dnf -y install https://dev.mysql.com/get/mysql84-community-release-fc42-1.noarch.rpm

### Fedora 41 ###
sudo dnf -y install https://dev.mysql.com/get/mysql84-community-release-fc41-1.noarch.rpm

### Fedora 40 ###
sudo dnf -y install https://dev.mysql.com/get/mysql84-community-release-fc40-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

Install MySQL Server 8.4 on Fedora

Add this line in your DNF config to avoid Fedora’s mysql8.4*:

sudo vim /etc/dnf/dnf.conf

Add:

[main]
exclude=mysql8.4*

Run the following commands to install MySQL Server 8.4 on Fedora:

sudo dnf install mysql-community-server

Press y to accept installation:

Updating and loading repositories:
Repositories loaded.
Package                                                                               Arch               Version                                                                                Repository                                            Size
....
Transaction Summary:
 Installing:        16 packages

Total size of inbound packages is 71 MiB. Need to download 71 MiB.
After this operation, 467 MiB extra will be used (install 467 MiB, remove 0 B).
Is this ok [y/N]: y

Install MySQL Server 8.0 on Fedora

Once you have added the repository and confirm to be enabled, proceed as below:

Disable MySQL 8.4 repository

  • Fedora 41
$ sudo vi  /etc/yum.repos.d/mysql-community.repo
[mysql-8.4-lts-community]
name=MySQL 8.4 LTS Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.4-community/fc/$releasever/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2023
  • Fedora 40 and below
sudo dnf config-manager --disable mysql-8.4-lts-community

Enable MySQL 8.0 repository

  • Fedora 41:
$ sudo vi  /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-2023
  • Fedora 40 and below:
sudo dnf config-manager --enable mysql80-community

Install MySQL 8.0

Then. 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  67 Packages

Total download size: 57 M
Installed size: 330 M
Is this ok [y/N]: y

Also accept the importation of GPG keys when requested.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                  29 MB/s |  57 MB     00:01
MySQL 8.0 Community Server                                                                                                                                            3.0 MB/s | 3.1 kB     00:00
Importing GPG key 0xA8D3785C:
 Userid     : "MySQL Release Engineering <[email protected]>"
 Fingerprint: BCA4 3417 C3B4 85DD 128E C6D4 B7B3 B788 A8D3 785C
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2023
Is this ok [y/N]: y

After installation, the package info can be seen from:

rpm -qi mysql-community-server

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 root@localhost: 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.4.5

Copyright (c) 2000, 2025, 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.4.5     |
+-----------+
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

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.

Other MySQL articles:

3 COMMENTS

  1. sudo firewall-cmd –permanent –add-rich-rule ‘rule family=”ipv4″ service name=”mysql” source address=”10.1.1.0/24″ accept’

    can i also set “source address=”0.0.0.0/0” here..??
    or is this Dangerous?

  2. installing is not a issue, but actually connecting to a MySQL database is a different story, nor matter what you do, you will always get “Access denied for user@localhost using password (YES)” …

LEAVE A REPLY

Please enter your comment!
Please enter your name here