Aller au contenu principal

Configuration de la base de données

FeedbackPulse SaaS utilise MySQL ou MariaDB comme base de données principale.


✅ Bases de données prises en charge

Base de donnéesVersionStatut
MySQL8.0+✅ Entièrement pris en charge (recommandé)
MariaDB10.6+✅ Entièrement pris en charge
PostgreSQL15+⚠️ Expérimental (les migrations peuvent nécessiter des ajustements)
SQLite3.35+⚠️ Développement uniquement (pas pour la production)

🔧 Création de la base de données

Avant d'exécuter le programme d'installation :

-- Se connecter à MySQL
mysql -u root -p

-- Créer la base de données avec le bon jeu de caractères
CREATE DATABASE feedbackpulse
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

-- Créer un utilisateur dédié (recommandé pour la sécurité)
CREATE USER 'feedbackpulse'@'localhost'
IDENTIFIED BY 'your_strong_password_here';

-- Accorder les permissions
GRANT ALL PRIVILEGES ON feedbackpulse.*
TO 'feedbackpulse'@'localhost';

FLUSH PRIVILEGES;
EXIT;

⚠️ Pourquoi utf8mb4 ? Il prend en charge le jeu de caractères Unicode complet incluant les emojis. Les retours clients contiennent souvent des emojis, c'est donc important !


⚙️ Configuration .env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=feedbackpulse
DB_USERNAME=feedbackpulse
DB_PASSWORD=your_strong_password_here

Problèmes courants

ProblèmeSolution
SQLSTATE[HY000] [2002] Connection refusedUtilisez 127.0.0.1 au lieu de localhost
SQLSTATE[HY000] [1045] Access deniedVérifiez le nom d'utilisateur/mot de passe, assurez-vous que l'utilisateur a les privileges
SQLSTATE[42S01] Table already existsLa base de données n'était pas vide. Supprimez et recréez, ou utilisez le flag --force
Les caractères emoji s'affichent comme ????Le jeu de caractères de la base de données doit être utf8mb4, pas utf8

🔍 Optimisation des performances MySQL

Pour les serveurs de production avec de nombreux locataires, optimisez MySQL :

# /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
# Pool de tampons InnoDB (définir à 50-70% de la RAM disponible)
innodb_buffer_pool_size = 1G

# Taille du fichier de journal
innodb_log_file_size = 256M

# Connexions max (augmenter pour les plateformes à fort trafic)
max_connections = 200

# Cache de requêtes (désactiver dans MySQL 8.0+, déprécié)
query_cache_type = 0

# Journal des requêtes lentes (pour le débogage des problèmes de performance)
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

Redémarrez MySQL :

sudo systemctl restart mysql

💾 Sauvegarde et restauration

Via le panneau d'administration

FeedbackPulse dispose d'une fonctionnalité de sauvegarde intégrée :

  1. Allez à Admin → Sauvegardes
  2. Cliquez sur Créer une sauvegarde
  3. Téléchargez le fichier .sql.gz

Sauvegarde manuelle

mysqldump -u feedbackpulse -p feedbackpulse | gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz

Restauration

gunzip < backup_20240101_120000.sql.gz | mysql -u feedbackpulse -p feedbackpulse

⏭️ Étapes suivantes