Serveurs Base de données

MySQL : Configuration et sécurisation

Table des matières

logo-mysql



Introduction



Bien souvent, le répertoire de travail de mysql se trouve dans /var/lib/mysql
Le principal fichier de configuration de mysql est my.cnf mais suivant les distributions, le fichier peut se trouver ailleurs :
CentOS8 : /etc/my.cnf.d/mariadb-server.cnf
Gentoo : /etc/mysql/mariadb.d/50-distro-server.cnf
Debian : /etc/mysql/mariadb.conf.d/50-server.cnf

Par défaut, la configuration de MySQL "fonctionne bien".

Néanmoins, il est possible de changer quelques informations. Cela peut être utile dans certains cas.

Après chaque modification, il est évidemment nécessaire de redémarrer le service mysql pour prendre en compte les modifications (une des 3 commandes suivant la distribution) :

Sous CentOS :
Code BASH :
systemctl restart mariadb.service


Sous Gentoo :
Code BASH :
/etc/init.d/mysql restart



Accéder à la base depuis l'extérieur



Si on souhaite accéder à nos bases mysql depuis l'extérieur, il est nécessaire de commenter la ligne skip-networking et de modifier la ligne bind-address :
Code TEXT :
#skip-networking
bind-address=0.0.0.0


Il ne faut pas oublier d'ouvrir le port 3306 (port par défaut) dans le pare-feu.

Avec Firewalld :

Code BASH :
firewall-cmd --add-service=mysql --permanent
firewall-cmd --reload


Une seule IP peut être définie dans la ligne bind-address. Jouer alors avec le paramétrages du pare-feu pour autoriser certaines IP.


Créer un deuxième utilisateur avec les pleins droits



Je conseille toujours de créer un deuxième utilisateur avec mot de passe, avec tous les droits pour travailler.

Utilisateur pleins droits pouvant se connecter de n'importe où :
Code SQL :
CREATE USER 'utilisateur'@'%' IDENTIFIED BY 'motdepasse'; GRANT ALL PRIVILEGES ON * . * TO 'utilisateur'@'%' IDENTIFIED BY 'motdepasse' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;


Utilisateur pleins droits pouvant se connecter depuis localhost uniquement :
Code SQL :
CREATE USER 'utilisateur'@'localhost' IDENTIFIED BY 'motdepasse'; GRANT ALL PRIVILEGES ON * . * TO 'utilisateur'@'localhost' IDENTIFIED BY 'motdepasse' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;


Activer les logs verbeux



ici, on va voir comment activer les logs verbeux de mysql.
Pratique si on développe un programme et qu'on ne comprend pas pourquoi les requêtes ne fonctionnent pas.
Au moins, vous verrez ce qui est réellement exécuté.

Dans le paragraphe [mysqld] du fichier de config, ajouter ces lignes :

Code BASH :
general_log = on
general_log_file = /var/log/mysql/mysql-debug.log


Le nom du fichier est évidemment personnalisable.

Ensuite, redémarrer le service mysql pour prendre en compte les modifs :

Le fichier est un fichier plein, tout à fait lisible. Il est donc possible de suivre en direct les modifs avec :

Code BASH :
tail -f /var/log/mysql/mysql-debug.log


Cette page a été vue 24215 fois