Bonjour,

après moultes recherches, je n'ai pas pu trouver de réponse à mon problème que voici (qui m'a l'air pourtant trivial) :
J'ai développé une application Qt qui se connecte à une base de données MySQL (plus précisément MariaDB) avec importation des données. J'essaye d'avoir une solution qui me permettrait de pas rencontrer de problèmes pour tous les cas de figure possibles sur un ordinateur que je ne connais pas (installation déjà courante de la BDD, mot de passe root présent, problème de sécurité, etc.). Mon application utilise les informations classiques pour se connecter à une base de données : user, password et host.
Pour l'instant, voici ma solution :
J'utilise le fichier .bat suivant (à terme, j'utiliserai NSIS) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
msiexec /i mariadb-10.0.12-win32.msi SERVICENAME=MySQL REMOVE=DEVEL ADDLOCAL=DBInstance,Client,MYSQLSERVER /qn
"C:\Program Files\MariaDB 10.0\bin\mysql.exe" -uroot -e "CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';"
"C:\Program Files\MariaDB 10.0\bin\mysql.exe" -uroot -e "CREATE DATABASE IF NOT EXISTS databaseTest"
"C:\Program Files\MariaDB 10.0\bin\mysql.exe" -uroot -e "GRANT ALL PRIVILEGES ON databaseTest.* TO 'user'@'localhost'"
"C:\Program Files\MariaDB 10.0\bin\mysql.exe" -uuser -ppassword -hlocalhost databaseTest < databaseTest.sql
Donc j'ai un dossier avec l'installateur de mariaDB que j'exécute avec certaines options pour une install' silencieuse (à l'aide de la doc https://mariadb.com/kb/en/mariadb/ma...t-installation ). Ces options ne font pas installer de mot de passe à l'utilisateur root (pardonnez-moi, je vous en conjure), c'était juste dans un souci de test et comme vous le voyez, j'utilise la commande mysql.exe (installé précédemment) avec root sans mot de passe.

Je vois un premier problème à définir un mot de passe root pour la base de données : je ne suis pas censé utiliser l'utilisateur root pour la connexion à ma base de données qui aurait tous les droits sur l'ensemble des bases de données donc ça me fait clairement penser à une faille de sécurité (de mon côté j'entends) et modifier le mot de passe root, ça veut dire faire rencontrer de potentiels problèmes à d'autres applications qui auraient la déconvenue de l'utiliser.

Ensuite, je crée un user qui sera le user qu'utilisera mon application pour se connecter et éviter le user root. Puis création de la base de données et importation avec l'user précédemment créé de la structure et des données du fichier .sql.
Déjà, pour créer un USER et éviter root, il faut être en root... J'avoue que je coince là-dessus. Et la solution de permettre la connexion d'utilisateur anonyme me parait aberrante pour des raisons de sécurité.

Pour information, j'ai testé sur une VM Windows 7 vierge et tout fonctionne impeccablement (et étonnamment...) bien. J'ai eu par contre des retours où ça ne fonctionnait pas (allez pas me demander l'erreur, les testeurs ne sont pas très bavards à ce niveau...) m'enfin je m'intéresse plus au problème de sécurité là.

Je suis donc ouvert à toute proposition qui me permettrait de me sauver de ce bourbier sans fond.

En vous remerciant bien allègrement pour toute aide future.