MySQL is a fast, efficient, secure, stable, easy-to-use, multi-platform, multi-threaded, multi-user, and well-documented relational database manager/server. Currently Oracle guides the development of MySQL, however the community version is available under the GPL license so it is still free software.
- Add a new caching_sha2_password authentication plugin is available. Like the sha256_password plugin, caching_sha2_password implements SHA-256 password hashing, but uses caching to address latency issues at connect time.
- Supports roles, which are named collections of privileges. Roles can be created and dropped. Roles can have privileges granted to and revoked from them. Roles can be granted to and revoked from user accounts.
- Incorporates the concept of user account categories, with system and regular users distinguished according to whether they have the SYSTEM_USER privilege
- Maintains information about password history, enabling restrictions on reuse of previous passwords also it is possible to configure user accounts such that too many consecutive login failures due to incorrect passwords cause temporary account locking.
- Add the new authentication mechanism: caching_sha2_password that implements the SHA-256 encryption algorithm (like the sha256_password mechanism) but using a cache to solve latency problems during the connection process.
- Incorporates several improvements to the InnoDB engine and the JSON data type.
You can check: What Is New in MySQL 8.0 for more information
MySQL 8.0 is not available in the official Debian repositories, it has been replaced by MariaDB: a fork of MySQL, MariaDB share features with MySQL but has a different development model and community.
MySQL 8.0 can be downloaded from the MySQL download site, however it is recommended to download the repository definition to keep updated with improvements and bug fixes.
Download repo definition
$ curl -LO# https://dev.mysql.com/get/mysql-apt-config_0.8.17-1_all.deb
Install the repo
$ sudo sh -c 'apt install lsb-release gnupg wget && dpkg -i mysql-apt-config_0.8.17-1_all.deb'
MySQL repo config
Install server and client
$ sudo apt update && sudo apt install mysql-server
root password configuration
Select authentication mechanism
Manage the server process
In this part we will learn how to start, stop or restart the mysql service and we will use the systemd initialization system (systemd is a replacement for the SysV initialization system also a configuration and service management suite for the GNU/Linux operating system)
Check the status
Check if your DB server has started sucessfully by executing the following command
$ sudo systemctl status mysql ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2021-04-02 21:46:43 CEST; 2min 59s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 20071 ExecStartPre=/usr/share/mysql-8.0/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 20106 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 2296) Memory: 337.1M CGroup: /system.slice/mysql.service └─20106 /usr/sbin/mysqld Apr 02 21:46:42 webserver systemd: Starting MySQL Community Server... Apr 02 21:46:43 webserver systemd: Started MySQL Community Server.
Start the server
If the previous command output the following information (note Active: inactive):
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: inactive (dead) since Fri 2021-04-02 22:16:50 CEST; 3s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 20071 ExecStartPre=/usr/share/mysql-8.0/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Process: 20106 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS) Main PID: 20106 (code=exited, status=0/SUCCESS) Status: "Server shutdown complete" Apr 02 21:46:42 webserver systemd: Starting MySQL Community Server... Apr 02 21:46:43 webserver systemd: Started MySQL Community Server. Apr 02 22:16:48 webserver systemd: Stopping MySQL Community Server... Apr 02 22:16:50 webserver systemd: mysql.service: Succeeded. Apr 02 22:16:50 webserver systemd: Stopped MySQL Community Server.
then we can start the server with:
$ sudo systemctl start mysql
Restart the server
To apply any configuration file modification, you must restart the server with the following command:
$ sudo systemctl restart mysql
In Debian we have the following directory structure for the configuration files.
/etc/mysql/ ├── conf.d │ └── mysql.cnf ├── my.cnf -> /etc/alternatives/my.cnf ├── my.cnf.fallback ├── mysql.cnf └── mysql.conf.d └── mysqld.cnf
Stop the server
$ sudo systemctl stop mysql
You can verify that MySQL will start after a system reboot by running the following command:
$ sudo systemctl is-enabled mysql enabled
Connect to the server
# sudo mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 8.0.24 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 owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>