Base de données : mysql

Par défaut, mysql est configuré pour créer sa structure dans un seul fichier de données nommé ibdata1.

Afin d'optimiser la libération de l'espace disque lors de la suppression de données volumineuses, nous avons optés pour la création d'autant de fichiers de données que de tables dans la base Sentinelle.

Pour cela nous utilisons l'option innodb_file_per_table de mysql

ProcédureModification de la configuration de mysql

  1. Paramétrage particulier

    Rails est un framework utilisant massivement les accès à la base de données. Aussi, afin de customiser mysql au besoin de Sentinelle, nous allons créer un fichier de configuration spécifique :

    sudo vi /etc/mysql/conf.d/sentinelle.cnf

    1. Et entrez les informations suivantes

      [mysqld]

      max_connections=400

      innodb_file_per_table

  2. Puis on redémarre mysql

    sudo service mysql restart

Création d'une base de données et d'un utilisateur pour notre Sentinelle

user="rails"

password=`pwgen 10 1`

sudo mysql --defaults-file=/etc/mysql/debian.cnf mysql -e "CREATE USER $user@localhost IDENTIFIED BY '$password';"

sudo mysql --defaults-file=/etc/mysql/debian.cnf mysql -e "GRANT ALL PRIVILEGES ON $user.* TO $user@localhost IDENTIFIED BY '$password' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;"

sudo mysql --defaults-file=/etc/mysql/debian.cnf mysql -e "CREATE DATABASE IF NOT EXISTS $user;"

Remarque

Nous avons créé ici une base 'rails' dont l'utilisateur 'rails' a tous les droits.

Vous noterez également la définition d'un mot de passe aléatoire pour cet utilisateur rails.

Nous allons maintenant créer le fichier de configuration de Sentinelle pour l'accès à la base de données.

echo "production:

adapter: mysql2

pool: 200

database: $user

username: $user

password: $password

socket: /var/run/mysqld/mysqld.sock

encoding: utf8" > /home/sentinelle/alizes/config/database.yml