In this article, we are going to look at how to Install MySQL 5.7 on Debian 11 and Debian 10. MySQL is one of the most widely used relational databases. We are going to install the community edition which is a free to installed software managed under General Public License.

Step 1: Add MySQL Repository on Debian 11 / Debian 10

Let’s download and install mysql repository set up package on Debian 11 and Debian 10. Run the below command


Once downloaded, we need to install the repository package.

sudo dpkg -i mysql-apt-config_0.8.18-1_all.deb

Note that MySQL 5.7 repository is not yet availaible for Debian 11 (Bullseye). In this case, we are going to select Debian 10 (Buster) for both Debian 11 and Debian 10.


Ensure mysql-8.0 is selected.


Next select mysql-5.7 as shown


Next, use the down arrow key to select Ok then click Ok and the package will be installed.


Step 2: Install MySQL 5.7 Server on Debian 11 / Debian 10

Since we have installed the repository for MySQL 5.7, we will now proceed to install MySQL 5.7 on Debian 11 and Debian 10. First update repository index

sudo apt update

Import missing GPG keys on Debian 11

If you encounter signatures couldn’t be verified errors similar to below:

The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29

Then import missing GPG key(s) with below command:

$ sudo apt-key adv --keyserver --recv-keys 467B942D3A79BD29
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.lBFUIjtfz9/ --keyserver --recv-keys 467B942D3A79BD29
gpg: key 467B942D3A79BD29: public key "MySQL Release Engineering <>" imported
gpg: Total number processed: 1
gpg:               imported: 1

Rerun apt update command to check if it works:

sudo apt update

Install MySQL 5.7 server package on Debian 11 / Debian 10

Then install mysql server as below

sudo apt install -y mysql-community-server

Set your preferred root password when prompted


Installation success output sample:

Unpacking libnuma1:amd64 (2.0.12-1+b1) ...
Selecting previously unselected package mysql-community-client.
Preparing to unpack .../mysql-community-client_5.7.37-1debian10_amd64.deb ...
Unpacking mysql-community-client (5.7.37-1debian10) ...
Selecting previously unselected package mysql-client.
Preparing to unpack .../mysql-client_5.7.37-1debian10_amd64.deb ...
Unpacking mysql-client (5.7.37-1debian10) ...
Selecting previously unselected package libmecab2:amd64.
Preparing to unpack .../libmecab2_0.996-14+b4_amd64.deb ...
Unpacking libmecab2:amd64 (0.996-14+b4) ...
Selecting previously unselected package mysql-community-server.
Preparing to unpack .../mysql-community-server_5.7.37-1debian10_amd64.deb ...
Unpacking mysql-community-server (5.7.37-1debian10) ...
Setting up libmecab2:amd64 (0.996-14+b4) ...
Setting up libnuma1:amd64 (2.0.12-1+b1) ...
Setting up mysql-community-client (5.7.37-1debian10) ...
Setting up mysql-client (5.7.37-1debian10) ...
Setting up mysql-community-server (5.7.37-1debian10) ...
update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Created symlink /etc/systemd/system/ → /lib/systemd/system/mysql.service.

Step 3: Start MySQL Service

When installed MySQL service is not started by default. Start it and also enable it to be automatically starting whenever the server is rebooted.

sudo systemctl restart mysql
sudo systemctl enable mysql

Confirm status as below:

$ systemctl status mysql
 mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset:>
     Active: active (running) since Thu 2022-01-06 13:04:38 EAT; 10s ago
   Main PID: 3666 (mysqld)
      Tasks: 27 (limit: 2322)
     Memory: 174.6M
        CPU: 250ms
     CGroup: /system.slice/mysql.service

Step 4: Secure MySQL 5.7 on Debian 11 / Debian 10

Secure your MySQL DB installation. Since we had already set the root password, you will be prompted to enter it to continue and you will also be asked if you would like to change. Respond accordingly as you wish.

$ sudo mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root: 
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 25 
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y

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

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

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...

 - Removing privileges on test database...

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

All done!

Step 5: Connect To MySQL Server using mysql client

At this point, we have successfully installed MySQL 5.7 on Debian. We can connect to it as below using the root password set earlier

$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.36 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, 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

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


Let’s create a test database

mysql> CREATE DATABASE testdb;
Query OK, 1 row affected (0.00 sec)

| Database           |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testdb             |
5 rows in set (0.01 sec)


You can confirm MySQL installed version as shown below:

mysql> SHOW VARIABLES LIKE "%version%";
| Variable_name           | Value                        |
| innodb_version          | 5.7.36                       |
| protocol_version        | 10                           |
| slave_type_conversions  |                              |
| tls_version             | TLSv1,TLSv1.1,TLSv1.2        |
| version                 | 5.7.36                       |
| version_comment         | MySQL Community Server (GPL) |
| version_compile_machine | x86_64                       |
| version_compile_os      | Linux                        |
8 rows in set (0.01 sec)

Step 6: Allow MySQL Remote Connections

If you want to be accessing MySQL database remotely, you can allow with the below commands

# open MySQL port 3306 on the firewall

sudo ufw allow mysql

# allow specific addresses to connect to mysql

sudo ufw allow from to any port 3306

That’s it for the installation of MySQL 5.7 on Debian 11 and Debian 10. I hope the guide has been helpful. Check other articles you might be interested in below: