Connexion via c++ à une base Mysql local?

massi723 Messages postés 11 Date d'inscription mardi 9 novembre 2010 Statut Membre Dernière intervention 27 mai 2011 - 9 nov. 2010 à 11:11
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 9 nov. 2010 à 23:06
bonjour,
J'ai une base Mysql que j'ai installé dans une machine dans le reseau local,
j'ai fait un programme C++ qui fait une connexion à la base.
ca marche sur le localhost mais j'arrive pas a se connecter à la base de données
depuis un autre poste dans le meme reseau local,
j'ai fait des modifications dans http.conf de apache(j'utilise wamp server)
mais le problème persiste.
voici une partie de mon code:

// Définitions des paramètres de connexion à la BD

#define host "192.168.1.15"//adr de la machine contenant la base
#define username "root"
#define password ""
#define database "mabase"
void main()
{

int result;
MYSQL *conn;
MYSQL_RES *res_set;
MYSQL_ROW row;
unsigned int i;
unsigned int numrows;
// Connexion à la BD
conn = mysql_init(NULL);
printf("try to connect..\n");
if (mysql_real_connect(conn, host, username, password, database,80, NULL, 0) == NULL)

{printf("error connection..\n"); getch();}
else
{...
merci de votre reponse

8 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
9 nov. 2010 à 11:43
Vérifie que mysql soit bien accessible sur le port 80 (ou un autre port).

Que se passe-t-il si tu ping la machine ? (ping 192.168.1.15)
Arrives-tu à te connecter via le client mysql au moins ? (mysql --user="root" --password="" --host=192.168.1.15 --database=mabase --port=80 ? et --port=3306 ?)

Piste:
- Le port par défaut de mysql est 3306 et non 80.
- Vérifie que ton wamp écoute sur le bon port
- Vérifie qu'il n'y ait pas de firewall

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
massi723 Messages postés 11 Date d'inscription mardi 9 novembre 2010 Statut Membre Dernière intervention 27 mai 2011
9 nov. 2010 à 13:41
oui le ping passe et le firwell est désactivé,
j'ai modifié le port en 3306
mais j'ai le message "error connection.."
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
9 nov. 2010 à 13:47
Avant de coder, on vérifie la connexion.
Tu as essayé, avec un client mysql, de te connecter à la base ?
(cf ligne de commande que j'ai écrite plus haut)

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
massi723 Messages postés 11 Date d'inscription mardi 9 novembre 2010 Statut Membre Dernière intervention 27 mai 2011
9 nov. 2010 à 13:52
Comment exécuter cette cmde,
je suis sur Windows ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
9 nov. 2010 à 14:18
Alors je vais avoir du mal à t'aider... Je vais essayer quand même.

Soit tu ouvres un terminal (windows + r, puis tu tapes cmd). Et tu essaies.
Si ça ne fonctionne pas, alors tu télécharges un client mysql graphique sur le net (google est ton ami).

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
massi723 Messages postés 11 Date d'inscription mardi 9 novembre 2010 Statut Membre Dernière intervention 27 mai 2011
9 nov. 2010 à 14:46
oui on sait (win+R,exec,cmd...)
j'ai essayé mais le terminal ne connait pas la commande,
j'ai téléchargé sqlwave mais il m'indique que ma machine n'est pas autorisée à connecter à ce serveur!
comment résoudre ce problème ?
SVP j'ai besoin de ton aide
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
9 nov. 2010 à 15:14
Si tu es sur d'avoir correctement configuré ton client, mais que la connexion n'est toujours pas établie, alors c'est que la configuration de ton wamp n'est pas correcte.

Vérifie dans la configuration de wamp sur quel port le serveur mysql écoute.
Dommage que tu ne sois pas sous Linux, je t'aurais aussi dit de faire un "nmap" pour tester les ports ouverts sur la machine qui sert de serveur. (Tu peux essayer de te procurer une version Windows, je crois que ça existe).

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
9 nov. 2010 à 23:06
Salut,
Comme précisé par CptPingu, avant de coder, il faut commencer par vérifier que tout marche bien côté serveur et que ce dernier est accessible depuis un autre PC du réseau local. Puisque tout marche en localhost cela signifie que ton serveur MySQL fonctionne correctement. Voici quelques pistes pour Windows:
1- Sur le PC serveur, dans un invite de commandes, tape "netstat -a" pour voir tous les ports ouverts. Si le port 3306 ne figure pas dans la liste alors ton MySQL utilise un autre port. Pour connaitre le port utilisé tu peux consulter le fichier my.ini (ou my.cnf selon la version)se trouvant dans le dossier dont le chemin ressemble à ceci: C:\wamp\bin\mysql\mysql5.1.36. Dans le bloc [mysqld] de ce fichier regarde la valeur du port. Cela s'applique aussi au bloc [wampmysqld].
2- Dans certaines configurations de MySQL, l'utilisateur "root" n'est pas autorisé à se connecter depuis un PC distant pour des raisons de sécurité. Il est préférable de créer un nouvel utilisateur ("admin" par exemple) en lui assignant un mot de passe et lui donnant le droit de se connecter depuis n'importe où. Tu peux utiliser SQLWave en local sur le PC serveur pour ajouter un utilisateur après s'être connecté en tant que root. C'est la paire login+mot de passe de l'utilisateur nouvellement créé qui sera utilisée pour se connecter à ta base MySQL depuis un autre PC.
3- Dans certaines configurations de MySQL incluses dans WAMP, toutes les connexions distantes sont interdites par défaut pour des raisons de sécurité. Pour les activer, une fois toutes les phases du développement du service web terminées, on va dans le fichier my.ini cité plus haut puis on commente la ligne bind-address=127.0.0.1 en ajoutant un # au début. Un redémarrage du service MySQL est nécessaire pour la prise en compte du changement.
4- Une fois tout est vérifié côté serveur, tu pourras utiliser SQLWave (ou tout autre client MySQL) depuis le PC distant en utilisant les paramètres de connexion corrects. Si tout va bien tu pourras ensuite passer au code de ton client.
5- En ce qui concerne le code du client, il est préférable d'utiliser pour le descripteur de la connexion une structure MYSQL et non un pointeur sur cette structure. C'est précisé dans la documentation de MySQL. Ceci permet, entre autres, de récupérer les derniers codes et messages d'erreur relatifs à la connexion. Petit exemple:
MYSQL conn;
mysql_init(&conn);
if(!mysql_real_connect(&conn,"192.168.1.15","admin","motdepasse","mabase",3306,NULL,0))
{
    printf("Failed to connect to database: Error: %s\n", mysql_error(&conn));
}
//...
mysql_close(&conn);

Ce petit bout de code affiche un message d'erreur décrivant la cause de l'échec de la connexion.
Voilà, j'espère t'avoir aidé un peu.
0
Rejoignez-nous