In this guide, we will cover how to install MySQL 8.0 on Fedora 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.
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 31/30/29, you need to add MySQL 8.0 community repository:
Add MySQL 8.0 repository to Fedora 31
sudo dnf -y install https://repo.mysql.com//mysql80-community-release-fc31-1.noarch.rpm
Add MySQL 8.0 repository to Fedora 30
Run the commands.
sudo dnf -y install https://repo.mysql.com//mysql80-community-release-fc30-1.noarch.rpm
Add MySQL 8.0 repository to Fedora 29
Run the following command on your Fedora 29 terminal:
sudo dnf -y install https://repo.mysql.com//mysql80-community-release-fc29-2.noarch.rpm
This will write a repository file to
Step 2: Install MySQL Server 8.0 on Fedora 31/30/29
Once you have added the repository and confirm to be enabled, proceed to install MySQL 8.0 onto your Fedora 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 : http://www.mysql.com/ 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 : (http://www.gnu.org/licenses/). 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 (http://www.mysql.com/) 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
After installation of MySQL 8.0 on Fedora 31/30/29, you need to do initial configuration to secure it.
1. Start and enable
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.
$ 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 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 owners. 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) 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
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 31/30/29 with our guide. Until next time, stay tuned.
Other MySQL articles: