Connexion distante base de données MySql en c / linux
Susherone
Messages postés8Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention 9 mars 2018
-
6 avril 2005 à 19:28
moumoute77
Messages postés6Date d'inscriptionvendredi 23 juillet 2010StatutMembreDernière intervention26 octobre 2013
-
3 juin 2011 à 23:36
Programme qui se connecte à partir d'un poste distant sous linux à un serveur mysql tournant sous windows. Testé et fonctionne très bien !
int main ( )
{
MYSQL mysql;
MYSQL_RES * resultat;
MYSQL_ROW row;
mysql_init(&mysql);
if (mysql_real_connect(&mysql,"ip","login","mdp","db",0,NULL,0)= =NULL)
{
printf("Erreur lors de la connexion à la base.\nErreur: %s",mysql_error(&mysql));
exit(-1);
}
else
{
printf("connexion établie\n");
}
if (mysql_query(&mysql," SELECT enreg FROM table ")! =0)
{
printf("requete échouée !\n");
mysql_close(&mysql);
exit(-1);
}
resultat = mysql_store_result(&mysql);
row = mysql_fetch_row(resultat);
printf("%s",row);
mysql_free_result(&mysql);
mysql_close(&mysql);
return 0;
}
ip : adresse de la machine sur laquelle tourne le serveur mysql
login : bon je pense que vous savez ce que c'est
mdp : mot de passe pareil
db : data base : base de données
SELECT enreg FROM table : requete
Problemes rencontrés et résolu:
mysql.h : il se trouve dans le paquetages libmysql-devel sur le cd d'installation de linux
Malgrè que la compilation ne donne aucune erreur, il se peut que vous ne puissiez pas réussir a vous connecter au serveur sql. Il se peut que le serveur autorise uniquement les connexion local (localhost), il faudra alors modifié le fichier de config du serveur, cliquez droit sur l'icone easy php->configuration->mysql, vous touverai une ligne ou il y a bind-adress-172.0.0.1, mettre un # pour le mettre en commentaire, sql va désormais accepté toutes les connexion et non seulement les connexions locale.
Une dernière chose à modifier, dans la base mysql et dans la table user, vous devrez créer un utilisateurs ayant comme host l'adresse ip de la machine avec laquelle vous allez vous connectez a la base.
Voili Voilou
moumoute77
Messages postés6Date d'inscriptionvendredi 23 juillet 2010StatutMembreDernière intervention26 octobre 2013 3 juin 2011 à 23:36
Bonjour, je viens de poster un message à un autre endroit et finalement, j'aurai du le faire ici.
J'ai suivi tout les indications précédentes et écrit un programme C similaire et qui se complie sans problèmes.
Le fait est que je ne peux pas me connecter à la base alors qu'en PHP , je peux, même à partir d'une autre machine dans le réseau; donc tout devrait aller bien mais rien à faire.
Je mets le source on ne sait jamais.
Merci d'avance pour votre aide.
#include <stdio.h>
#include
void requete(MYSQL *mysql)
{
MYSQL_RES *result;
MYSQL_ROW elementsColonne;
unsigned int nbColonnes;
int i;
if(mysql_query(mysql,"SELECT * FROM te"))
{
printf("Erreur dans la requete\n");
return;
}
else
{
printf("requete bonne");
return;
}
}
int main(int argc, char **argv)
{
MYSQL *mysql;
if((mysql mysql_init(NULL)) NULL)
{
printf("Erreur d'initialisation");
return 0;
}
if(!mysql_real_connect(mysql,"192.168.1.59","root","","station_meteo",3306,NULL,0))
{
printf("tu n'arrives pas a te connecter\n",mysql_error(mysql));
}
else
{
printf("c bon tu y arrives");
requete(mysql);
}
mysql_close(mysql);