#!/bin/bash # Script pour configurer l'accès à la base de données des adresses # sur chaque environnement Incus echo "Configuration de l'accès à la base de données des adresses" echo "==========================================================" # Fonction pour créer l'utilisateur sur un container create_user_on_container() { local container=$1 local api_ip=$2 local maria_ip=$3 echo "" echo "Configuration pour $container..." echo "Container MariaDB IP: $maria_ip" echo "Container API IP: $api_ip" # Se connecter au container MariaDB et créer l'utilisateur incus exec $container -- mysql -u root -p -e " -- Créer l'utilisateur pour l'accès depuis l'API CREATE USER IF NOT EXISTS 'adresses_user'@'$api_ip' IDENTIFIED BY 'd66,AdrGeo.User'; GRANT SELECT ON adresses.* TO 'adresses_user'@'$api_ip'; -- Créer aussi un utilisateur localhost pour les tests directs CREATE USER IF NOT EXISTS 'adresses_user'@'localhost' IDENTIFIED BY 'd66,AdrGeo.User'; GRANT SELECT ON adresses.* TO 'adresses_user'@'localhost'; -- Optionnel : créer un utilisateur pour tout le sous-réseau CREATE USER IF NOT EXISTS 'adresses_user'@'13.23.33.%' IDENTIFIED BY 'd66,AdrGeo.User'; GRANT SELECT ON adresses.* TO 'adresses_user'@'13.23.33.%'; FLUSH PRIVILEGES; -- Vérifier SELECT user, host FROM mysql.user WHERE user = 'adresses_user'; " echo "✓ Utilisateur créé sur $container" } # Fonction pour tester la connexion test_connection() { local api_container=$1 local maria_ip=$2 echo "" echo "Test de connexion depuis $api_container vers $maria_ip..." incus exec $api_container -- mysql -h $maria_ip -u adresses_user -p'd66,AdrGeo.User' -e " SELECT DATABASE(); SHOW TABLES FROM adresses LIMIT 5; " if [ $? -eq 0 ]; then echo "✓ Connexion réussie!" else echo "✗ Échec de la connexion" fi } # Configuration pour chaque environnement echo "" echo "1. DÉVELOPPEMENT (DVA)" read -p "IP du container dva-api [par défaut: 13.23.33.45]: " DVA_API_IP DVA_API_IP=${DVA_API_IP:-13.23.33.45} create_user_on_container "dva-maria" "$DVA_API_IP" "13.23.33.46" echo "" echo "2. RECETTE (RCA)" read -p "IP du container rca-api [par défaut: 13.23.33.35]: " RCA_API_IP RCA_API_IP=${RCA_API_IP:-13.23.33.35} create_user_on_container "rca-maria" "$RCA_API_IP" "13.23.33.36" echo "" echo "3. PRODUCTION (PRA)" read -p "IP du container pra-api [par défaut: 13.23.33.25]: " PRA_API_IP PRA_API_IP=${PRA_API_IP:-13.23.33.25} create_user_on_container "pra-maria" "$PRA_API_IP" "13.23.33.26" # Tests de connexion echo "" echo "==========================================================" echo "Tests de connexion" echo "==========================================================" read -p "Voulez-vous tester les connexions? (o/n): " test_choice if [ "$test_choice" = "o" ]; then test_connection "dva-api" "13.23.33.46" test_connection "rca-api" "13.23.33.36" test_connection "pra-api" "13.23.33.26" fi echo "" echo "Configuration terminée!" echo "" echo "Notes importantes:" echo "- Les utilisateurs ont été créés avec accès SELECT uniquement sur la base 'adresses'" echo "- Trois types d'accès ont été configurés:" echo " 1. Depuis l'IP spécifique de chaque container API" echo " 2. Depuis localhost (pour les tests directs)" echo " 3. Depuis tout le sous-réseau 13.23.33.% (optionnel, moins sécurisé)" echo "" echo "Pour tester manuellement depuis un container API:" echo "incus exec [container-api] -- mysql -h [ip-maria] -u adresses_user -p'd66,AdrGeo.User' adresses"