Connexion distante base de données MySql en c / linux

Susherone Messages postés 8 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 9 mars 2018 - 6 avril 2005 à 19:28
moumoute77 Messages postés 6 Date d'inscription vendredi 23 juillet 2010 Statut Membre Dernière intervention 26 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 !

compilation : gcc mon_prog.c -o mon_prog -L/usr/lib/mysql -lmysqlclient

*****************************************************
#include <stdio.h>
#include

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

3 réponses

refresh5 Messages postés 3 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 25 avril 2005
25 avril 2005 à 13:28
salut,

je viens de compiler ton code est j 'ai des erreurs...

mon système: Linux mandrake 10.1

Mysql version 4.0.x



j'ai tapez: gcc testmysql.c -o testmysql.exe -lmysqlclient



et voici l'erreur:

testmysql.c: In function `main':

testmysql.c:35: warning: passing arg 1 of `mysql_free_result' from incompatible pointer type



Quelqu un pourrais m aider? je souhaite me connecter à mysql avec un programme en C.



les programme que j ai trouver dans ce site ne marche pas... car la compilation me donne des erreurs.



j ai installer la librairie de mysql pour developpeur.



merci pour votre aide
0
Susherone Messages postés 8 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 9 mars 2018
25 avril 2005 à 20:22
salut ce n'est pas une erreur ke ta mai un avertissement ! c different, tu cherche a faire koi avec ton programme ?
0
moumoute77 Messages postés 6 Date d'inscription vendredi 23 juillet 2010 Statut Membre Dernière intervention 26 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);

}
0
Rejoignez-nous