Problème d'accès à une base MariaDB depuis une image Docker
Hello,
Je tente d'héberger un site perso en Java sur mon NAS Synology DS223 qui tourne sous DSM7.2. Pour cela j'utilise Container Manager qui permet de monter des images Docker et MariaDB pour la base de données.
Mon problème est le suivant : j'ai un compte root sur MariaDB dont j'ai défini le mot de passe. Pour des raisons de sécurité et parce qu'à terme je vais créer plusieurs bases de données sur MariaDB, je voudrais configurer un compte utilisateur pour mon application Java qui tourne sous Docker.
J'ai donc créé un compte nominatif avec les commandes suivantes, connecté en root sur la base :
Code:
1 2
| CREATE USER 'monutilisateur'@'localhost' IDENTIFIED BY '<password>';
GRANT ALL PRIVILEGES ON mabase.* TO 'monutilisateur'@'localhost' IDENTIFIED BY '<password>'; |
J'y accède bien avec un client MariaDB en tant que monutilisateur depuis mon PC sur le réseau local.
Mais ça ne fonctionne pas pour mon site.
Si j'utilise le compte root, mon application démarre correctement et accède bien à la base.
Voici la configuration associée :
Code:
1 2 3 4 5 6
| spring:
datasource:
driverClass: org.mariadb.jdbc.Driver
url: jdbc:mariadb://192.168.1.49:3306/cure?autoReconnect=false&zeroDateTimeBehavior=convertToNull&useSSL=false&useTimezone=true&serverTimezone=Europe/Paris
username: root
password: <password> |
Dans les logs, je n'ai pas d'erreur :
Citation:
2024-10-30 10:24:39 [main] INFO org.flywaydb.core.FlywayExecutor:line - Database: jdbc:mariadb://192.168.1.49/ (MariaDB 10.11)
Par contre si je configure l'application de la manière suivante :
Code:
1 2 3 4 5 6
| spring:
datasource:
driverClass: org.mariadb.jdbc.Driver
url: jdbc:mariadb://192.168.1.49:3306/cure?autoReconnect=false&zeroDateTimeBehavior=convertToNull&useSSL=false&useTimezone=true&serverTimezone=Europe/Paris
username: monutilisateur
password: <password> |
J'ai le message d'erreur suivant, qui n'est pas du tout clair :
Citation:
SQL State : 28000
Error Code : 1045
Message : (conn=10) Access denied for user 'root'@'172.17.0.2' (using password: YES)
Je ne comprends pas pourquoi il indique root alors que je tente en monutilisateur ni à quoi correspond l'IP 172.17.0.2, qui n'est ni sur mon réseau local, ni bien sûr mon IP publique... Le mot de passe est évidemment correct.
Par acquis de conscience, j'ai fait un test avec une IP bidon :
Code:
1 2 3 4 5 6
| spring:
datasource:
driverClass: org.mariadb.jdbc.Driver
url: jdbc:mariadb://192.168.1.50:3306/cure?autoReconnect=false&zeroDateTimeBehavior=convertToNull&useSSL=false&useTimezone=true&serverTimezone=Europe/Paris
username: root
password: <password> |
J'obtiens l'erreur suivante, ce qui est plutôt logique :
Citation:
SQL State : 08000
Error Code : 0
Message : Socket fail to connect to host:address=(host=192.168.1.50)(port=3306)(type=primary). No route to host
Est-ce qu'une âme charitable aurait une idée de ce qu'il se passe ici ?
Merci pour votre aide !