Connectez-vous au conteneur MariaDB :
docker exec -it mariadb mysql -u root -p
Puis exécutez le script SQL :
-- Créer la base de données
CREATE DATABASE IF NOT EXISTS duhaz_blog CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Créer l'utilisateur (changez le mot de passe !)
CREATE USER IF NOT EXISTS 'duhaz_user'@'%' IDENTIFIED BY 'votre_mot_de_passe_securise';
-- Donner les privilèges
GRANT ALL PRIVILEGES ON duhaz_blog.* TO 'duhaz_user'@'%';
FLUSH PRIVILEGES;
Vous pouvez aussi utiliser le script fourni :
docker exec -i mariadb mysql -u root -p < scripts/setup_mariadb.sql
Sur votre machine de développement :
cd /Users/duhaz/projets/blog-duhaz
pip install -r requirements.txt
Cela installera mysqlclient pour la connexion à MariaDB.
Gardez d'abord la configuration SQLite pour exporter les données :
# .env
SECRET_KEY=votre_cle
DEBUG=True
# Base de données SQLite (pour l'export)
# DATABASE_NAME=db.sqlite3
# Laisser commenté pour l'instant
# DB_ENGINE=mysql
# DB_NAME=duhaz_blog
# DB_USER=duhaz_user
# DB_PASSWORD=votre_mot_de_passe
# DB_HOST=mariadb
# DB_PORT=3306
ALLOWED_HOSTS=localhost,127.0.0.1
python scripts/migrate_to_mariadb.py
Le script va :
backup/sqlite_data.json.env pour activer MariaDBModifiez votre .env pour activer MariaDB :
# .env
SECRET_KEY=votre_cle
DEBUG=True
# Base de données SQLite (ancienne config - commentée)
# DATABASE_NAME=db.sqlite3
# Base de données MariaDB (ACTIVE)
DB_ENGINE=mysql
DB_NAME=duhaz_blog
DB_USER=duhaz_user
DB_PASSWORD=votre_mot_de_passe_securise
DB_HOST=mariadb # ou l'IP de votre RPI
DB_PORT=3306
ALLOWED_HOSTS=localhost,127.0.0.1
Puis appuyez sur Entrée pour continuer la migration.
Testez votre application :
python manage.py runserver
Vérifiez que :
python manage.py dbshell
python manage.py createsuperuser
python manage.py showmigrations
# Sur le Raspberry Pi
docker exec mariadb mysqldump -u root -p duhaz_blog > backup_mariadb_$(date +%Y%m%d).sql
Si vous ne pouvez pas vous connecter à MariaDB :
Vérifiez que le conteneur MariaDB est bien démarré :
docker ps | grep mariadb
Vérifiez que le port 3306 est exposé :
docker port mariadb
Testez la connexion réseau :
telnet <ip_raspberry_pi> 3306
Vérifiez les logs du conteneur :
docker logs mariadb
Vérifiez que l'utilisateur a bien les bonnes permissions :
docker exec -it mariadb mysql -u root -p
SHOW GRANTS FOR 'duhaz_user'@'%';
Si vous avez des problèmes d'encodage (caractères accentués) :
ALTER DATABASE duhaz_blog CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
backup/sqlite_data.json contient toutes vos données. Conservez-le !db.sqlite3 tant que vous n'avez pas confirmé que tout fonctionneDB_HOSTSi quelque chose ne va pas, vous pouvez revenir à SQLite :
.env pour commenter les lignes MariaDBDATABASE_NAME=db.sqlite3Vos données SQLite originales sont intactes dans db.sqlite3.