Mise en place de serveur SQL sur Debian


Debian, Linux / mardi, février 18th, 2014
  1. Prérequis 

J’ai installé mon serveur avec les éléments suivants :

  • Une machine sous debian-6.0.6-amd64
  • Une interface de virtualisation VMWare
  • Une adresse IP statique
  • Liste de paquet mis à jour (sources.list)

  2. Installation

Avant de commencer à faire toutes installation, il faut faire un apt-get upgrade & update.  Il faut ensuite installer les paquets suivants grâce à la commande apt-get install mysql-server mysql-client libmysqlclient15-dev mysql-common php5-mysql

3. Configuration

Étant donné que la configuration principe de notre serveur de base de données se trouve dans le fichier my.cnf, on va y aller dans le but de changer quelques paramètres pour optimiser notre base de données.  nano /etc/mysql/my.cnf

Voici quelques options intéressantes à modifier par défaut :

language = /usr/share/mysql/french
Choisir la langue par défaut pour les messages du serveur (français)
key_buffer = 32M
Taille du cache des index
query_cache_limit = 2M
Taille limite du cache par requête
query_cache_size = 32M
Taille totale du cache des requêtes
#log_bin = /var/log/mysql/mysql-bin.log
#expire_logs_days = 10
Désactiver le log binaire en commentant ces deux lignes grâce à # (le log binaire n’est utile que dans le cas de réplications avec serveurs maître-esclave)
log_slow_queries = /var/log/mysql/mysql-slow.log
Mettre en log les requêtes lentes (utile pour les repérer et les optimiser)
long_query_time = 2
Durée (en secondes) à partir de laquelle une requête est considérée comme lente

[mysqld]

default-character-set = utf8
Jeu de caractères par défaut pour le serveur
default-collation = utf8_general_ci
Collation du jeu de caractères

[client]

default-character-set = utf8
Jeu de caractères par défaut pour le client
Redémarrer se serveur grâce à la commande /etc/init.d/mysql reload  ou service mysql restart.
 4. Démarrage
Lancer la commande  mysql -u(login) -p(motdepasse). Dans mon cas la commande est  mysql -u root -p azerty.
Et voila ! on a un serveur SQL qui est fonctionnel. Mais comme votre tâche ne s’arrêtera s’arrêtera surement pas la comme la mienne je vais vous montrer quelques commandes utiles.
down   Ne Jamais oublier le ; a la fin d’une requête dans MySQL
  5. Commandes utiles

 * Voir la liste de base de données :  SHOW DATABASES;

 * Créer une base de données : CREATE DATABASE nom_base;
 * utiliser une base de donnée précise : USE nom_base;
 * affiche la liste de table d’une base de donnée sélectionnée : SHOW TABLES;
 * Afficher le statut du serveur : SHOW STATUS;
 * Décrire les attributs d’une table : DESCRIBE nom_table;
 * Créer un utilisateur :  CREATE USER user@’localhost’ IDENTIFIED BY ‘password;
 * Donner des privilèges à un utilisateur sur un bd en fonction de vos besoins :
   – GRANT ALL PRIVILEGES on test.* to user@’%’;
   – GRANT SELECT,INSERT,UPDATE,DELETE on test.* to user@’%’ identified by ‘user’;
   – GRANT ALL PRIVILEGES on *.* to user@’%’ identified by ‘user’;
 * Appliquer les privilèges : FLUSH PRIVILEGES;

vous pouvez accéder a votre serveur SQL en local mais pas de l’extérieur ( une autre machine dans le même réseau ou à l’extérieur) .

Pour contourner ce problème il faut se rendre dans le fichier de conf my.cnf : nano /etc/mysql/my.cnf ; ensuite il faut rechercher la ligne ou il y’a écrit bind- adress=127.0.0.1 et la remplacer par bind-address=0.0.0.0

Redémarrer se serveur grâce à la commande /etc/init.d/mysql reload  ou service mysql restart.

Mais attention, votre serveur est désormais accessible partout ! il faut donc pour cela mettre un petit script de filtrage en fonction nos besoins :

– /sbin/iptables -A INPUT -i eth0 -s 192.168.1.1 -p tcp –destination-port 3306 -j ACCEPT (Pour donner l’accès à une seule IP qui peut être le server Web par exemple)

– /sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp –destination-port 3306 -j ACCEPT ( Pour donner l’accès à une plage d’adresse ip donnée)

C’est terminé pour mon premier tuto, vous avez enfin un serveur en place et complètement opérationnel.