MySQL : Configuration et sécurisation
Table des matières
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 maintenant il se trouve dans /etc/mysql/mariadb.d/ ou /etc/mysql/mariadb.conf.d/ sous le nom 50-server.cnf ou 50-distro-server.cnf.
Par défaut, la configuration de MySQL "fonctionne bien".
Néanmoins, il est possible de changer quelques informations dedans. 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) :
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 :
Il ne faut pas oublier d'ouvrir le port 3306 (port par défaut) dans le pare-feu.
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.
Je conseille toujours de créer un deuxième utilisateur avec mot de passe, avec tous les droits pour travailler (un utilisateur en localhost et partout):
Pour un utilisateur sur localhost (pour un site par exemple) mais que sur une seule base de données (ici "base") :
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 maintenant il se trouve dans /etc/mysql/mariadb.d/ ou /etc/mysql/mariadb.conf.d/ sous le nom 50-server.cnf ou 50-distro-server.cnf.
Par défaut, la configuration de MySQL "fonctionne bien".
Néanmoins, il est possible de changer quelques informations dedans. 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) :
Code BASH :
/etc/init.d/mysqld restart
Code BASH :
service mysqld restart
Code BASH :
systemctl restart mysqld.service
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.
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 (un utilisateur en localhost et partout):
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 ; 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 ;
Pour un utilisateur sur localhost (pour un site par exemple) mais que sur une seule base de données (ici "base") :
Code SQL :
CREATE USER 'utilisateur'@'localhost' IDENTIFIED BY 'motdepasse'; GRANT ALL PRIVILEGES ON base . * TO 'utilisateur'@'localhost' IDENTIFIED BY 'motdepasse' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;