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

Signaler
Messages postés
8
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
9 mars 2018
-
Messages postés
7
Date d'inscription
vendredi 23 juillet 2010
Statut
Membre
Dernière intervention
26 octobre 2013
-
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

Messages postés
3
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
25 avril 2005

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
Messages postés
8
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
9 mars 2018

salut ce n'est pas une erreur ke ta mai un avertissement ! c different, tu cherche a faire koi avec ton programme ?
Messages postés
7
Date d'inscription
vendredi 23 juillet 2010
Statut
Membre
Dernière intervention
26 octobre 2013

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);

}