Welcome to our tutorial on how to install MySQL 8 on Debian 10 Buster.
Install MySQL 8 on Debian 10 Buster
In this guide, we are going to install MySQL 8 on Debian 10 Buster from the source code. As such, before you can continue, you need to install some required dependencies.
Install Required Dependencies
Since we are installing MySQL 8 from the source code, there are a number of build tools that are required for a successful build process.
apt install cmake libncursesw5-dev libncurses5-dev cmake build-essential libssl-dev pkg-configInstall Boost C++ Library.
As a required dependency, MySQL currently requires boost_1_69_0. You would however install from repos, but the available version is boost_1_67. Hence, you need to build Boost C++ from source code. Therefore, download it and build it and install it as shown below.
wget https://dl.bintray.com/boostorg/release/1.69.0/source/boost_1_69_0.tar.gz -P /tmpcd /tmptar xzf boost_1_69_0.tar.gzcd boost_1_69_0
./bootstrap.sh --prefix=/usr/./b2
./b2 installCreate mysql User and Group
A mysql user is required to run MySQL server.
useradd -r -M -s /bin/false mysqlDownload MySQL 8 Source Code
Next, navigate to MySQL Download Area and download the generic Linux (Architecture Independent) MySQL 8 source code. You can simply run the command below to download MySQL 8.16.
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.16.tar.gz -P /tmpOnce the download is done, verify the integrity by comparing the MD5 checksums. The MD5 checksum of the downloaded archive should be: MD5: 06f16ed2dc84abeaa77c697c2d6f07e5
cd /tmp
md5sum mysql-8.0.16.tar.gz
06f16ed2dc84abeaa77c697c2d6f07e5 mysql-8.0.16.tar.gzIf the integrity of the downloaded file passes, proceed to the next step.
Extract the Source Code
Once the download is done, extract the MySQL 8 archive. In this demo, MySQL tarball is downloaded to /tmp.
tar xzf mysql-8.0.16.tar.gzNavigate to the extracted source directory and create MySQL 8 build directory.
cd mysql-8.0.16/mkdir buildNext, navigate to the build directory just created and build it as shown below;
cd build
cmake ../../mysql-8.0.16Next, run the make command to build the directory.
makeInstall MySQL 8 on Debian 10 Buster
Once the compilation of MySQL is done, you can install it using the make install command.
make installThis will install MySQL under /usr/local/mysql.
Initialize MySQL 8 Data Directory
Once the installation is done, you need to initialize the data directory. Hence, navigate to MySQL installation directory.
cd /usr/local/mysql/Next, create a MySQL directory for import and export operations. This directory will be used a value to the secure_file_priv system variable.
mkdir mysql-filesSet the user and group ownership of the the directory above to mysql. Also set the permissions of the directory to rwxr-x—.
chown mysql:mysql mysql-files
chmod 750 mysql-filesNext, initialize the database by executing the command below;
bin/mysqld --initialize --user=mysql2019-07-20T12:56:06.835551Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.16) initializing of server in progress as process 11174
2019-07-20T12:56:10.680260Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: .qMkS;oEu8+(
2019-07-20T12:56:12.782049Z 0 [System] [MY-013170] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.16) initializing of server has completedAs you can see from the output, the initial temporary password of the root@localhost user is generated, A temporary password is generated for root@localhost: .qMkS;oEu8+(
Running MySQL 8
Copy MySQL startup files from the support-files directory to /etc/init.d.
cp support-files/mysql.server /etc/init.d/mysqlReload the systemd manager configuration.
systemctl daemon-reloadStart MySQL.
systemctl start mysqlWhen mysql is run, systemd-sysv-generator will generate the /run/systemd/generator.late/mysql.service file. Copy this file to /etc/systemd/system.
cp /run/systemd/generator.late/mysql.service /etc/systemd/systemEdit the /etc/systemd/system/mysql.service.
export EDITOR=vim
systemctl edit mysql.service[Install]
WantedBy=multi-user.targetEnable MySQL to run on system boot.
systemctl enable mysqlAdd MySQL binary path your PATH environment.
export PATH=$PATH:/usr/local/mysql/bin/Verify that MySQL is working as expected by connecting to it using the temporary password generated during initialization.
mysql -u root -pEnter password: .qMkS;oEu8+(
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.16
Copyright (c) 2000, 2019, 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>Once you login, reset the root password.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyP@ssWord';You can further confirm the version of MySQL by running the query.
SHOW VARIABLES LIKE "%version%";+--------------------------+-------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------+
| immediate_server_version | 999999 |
| innodb_version | 8.0.16 |
| original_server_version | 999999 |
| protocol_version | 10 |
| slave_type_conversions | |
| tls_version | TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 |
| version | 8.0.16 |
| version_comment | Source distribution |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
| version_compile_zlib | 1.2.11 |
+--------------------------+-------------------------------+
11 rows in set (0.02 sec)MySQL initial Security
Next, you can run the initial security script, mysql_secure_installation to remove anonymous database users, disable remote root login and remove the test databases.
That is all on how to install MySQL 8 on Debian 10 Buster. Enjoy.
Related Tutorials;
Install MySQL 8 on Fedora 30/Fedora 29


After everything is installed, I cannot connect to the console tool, the user “root” is not authorized to log in, password or not.
Hello Yanick
When you start mysqld service and run any of the commands below as root user or with sudo;
mysql
or
mysql -u root
What error do you get?