Installer un serveur Mysql sur Ubuntu

Dans ce tutoriel nous allons installer un serveur mysql basic sur Ubunto / Rapberri PI

Installation de MySQL

#On met a jour les libraries disponibles
sudo apt update
#On install le dernier mysql
sudo apt install mysql-server
#On securise l'installation
sudo mysql_secure_installation
  VALIDATE PASSWORD - yes
  STRONG - 2
  Remove anonymous users - y
  Disallow root login remotely - y
  Remove test database - y
  Reload privilege tables now -y

Configuration des accès

La limitation des accès se fait de préférence avec le firewall.
En effet mysql permet de restreindre à une seul IP… mais c’est bien moins évolutif

#Dans la configuration mysql, on permet donc la connexion depuis toute IP
vim /etc/mysql/mysql.conf.d/mysqld.cnf
   bind-address = 0.0.0.0
sudo systemctl restart mysql.service
#Dans le firewall, on limite les accès au port mysql sur les IP clientes
sudo ufw allow from <mon_IP_Client> to any port 3306
sudo ufw allow from 127.0.0.1 to any port 3306
#On ajoute un utilisateur qui pourra se connecter en utilisant toute les IP cliente definit dans le firewall
sudo mysql
CREATE USER 'mcraftuser'@'%' IDENTIFIED BY '<monpassword>';
CREATE DATABASE minecraftdb;
GRANT ALL PRIVILEGES ON minecraftdb.* TO 'mcraftuser'@'%' WITH GRANT OPTION;
#On vérifie l’état du service MySQL
systemctl status mysql.service
#On vérifie que notre utilisateur arrive à se loguer :
mysql -u mcraftuser -h <mon_IP_Serveur> -P 3306 -p
mysql -u mcraftuser -h localhost -P 3306 -p
mysql -u mcraftuser -h 127.0.0.1 -P 3306 -p
#On vérifie que les commandes admin root fonctionnent bien
sudo mysqladmin version
#On peut éventuellement vérifier depuis un client aléatoire que la connexion est bien interdite
[Depuis un client] mysql -u mcraftuser -h <mon_IP_Serveur> -P 3306 -p
[Sur le serveur] cat /var/log/ufw.log | grep 3306
=> On devrait voir un BLOCK log

Astuce / Maintenance

# SAVE/EXPORT A DATABASE 
mysqldump -u [user] -p [db_name] | gzip > [filename_to_compress.sql.gz]

# IMPORT A DATABASE 
gunzip < [compressed_filename.sql.gz] | mysql -u [user] -p[password] [databasename]