Files
geo/api/scripts/setup_addresses_access.sh
Pierre 0687900564 fix: Récupérer l'opération active depuis la table operations
- Corrige l'erreur SQL 'Unknown column fk_operation in users'
- L'opération active est récupérée depuis operations.chk_active = 1
- Jointure avec users pour filtrer par entité de l'admin créateur
- Query: SELECT o.id FROM operations o INNER JOIN users u ON u.fk_entite = o.fk_entite WHERE u.id = ? AND o.chk_active = 1
2026-01-26 16:57:08 +01:00

106 lines
3.6 KiB
Bash
Executable File

#!/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"