# connexion a distance a une base mysql

## crevette

Salut.

j'ai besoin de mettre a jour des données automatiquement dans une base mysql depuis ma workstation vers mon serveur via un script.

je voulais savoir si quelqu'un connaissait un soft qui fassent juste client pour base mysql, car je n'ai pas envie de compiler tout mysql juste pour avoir le client.

Sinon j'avais penser utiliser Perl + un module d'accès a mysql.

Quelq'un a t'il déja utilisé ca? est ce facile?

----------

## Niko

Hello

voici les quelques infos que je possede ( a prendre avec des pincettes   :Wink:  )

- pour l'acces distant a mysql, il me semble effectivement qu'il faille recompiler ... par defaut elle n'accepte que les connexions provenant de localhost

- pour cette raison, une solution pour l'administration a distance de la base c'est une interface web type phpMyadmin

- pour les scripts Perl + acces mysql, personnellement j'avais utilisé  cette DOC pour faire un script de maintenance en cron sur le serveur ... je n'y connaissais rien en perl ( j'y connais toujours pas grand chose d'ailleurs lol ) et cette doc avait suffit

voili voilou 

++

----------

## BeTa

 *Niko wrote:*   

> par defaut elle n'accepte que les connexions provenant de localhost
> 
> - pour cette raison, une solution pour l'administration a distance de la base c'est une interface web type phpMyadmin

 

ca ca dépend de la facon dont tu as paramétré tes droits...

----------

## crevette

pour l'acces j'ai deja configuré un user distant.

Phpmyadmin ne m'interresse pas car je veux automatiser l'accès et le remplissage de la base a distance.

Pour ta doc je fais regarder, a savoir qhue je ne veux pas faire de CGI mais juste un script lancé par une appli

----------

## Niko

c'est vrai que la doc concerne la creation d'une interface web avec CGI donc dans ton cas ya beaucoup de choses inutiles (   :Embarassed:  ) ... mais je pense que tu y trouveras les bases pour l'utilisation du module DBI de perl avec mysql ( point IV-1.2) ... je l'avais utilisé sans CGI et ca tournais bien  :Wink: 

++

----------

## arlequin

Y a deux pistes que tu peux étudier.

La première, chose presque surprenante, et que tu peux faire de la réplication de base de données sous mySql. En définissant un maître et un esclave. La magie de la chose, c'est que les deux bases vont se synchroniser... héhé   :Cool: 

La deuxième, c'est la commande mysql. Tout petit, tout con, mais tu peux déjà faire des trucs sympa. Exemple:

Soit un fichier SQL nommé fichier.sql, genre

```
USE mysql;

SELECT user, host FROM user;
```

Si tu fais:

```
$ mysql -p'motdepass' < fichier.sql > resultat.txt
```

Tu retrouveras dans ton fichier resultat.txt, ce que renvoie les commandes SQL écrites dans le fichier fichier.sql.

Voilà... c'est bien plus simple que la réplication. Mais pour avoir une synchronisation incrémentale plutôt que complète, tu auras peut-être à rajouter des champs dans tes tables   :Wink: 

De là, tu as les données de la base 1 que tu peux exporter dans la base 2... enfin, moyennant l'ajout de commandes SQL...

----------

## crevette

Excuse moi alrequin mais je ne veux pas faire de replication.

aurais je dis ca ????

----------

## arlequin

Ok, autant pour moi...

En fait, je vois pas trop où est le problème ? Tu peux te connecter à distance sur une base mysql sans aucun soucis. Faut juste que t'es la permission sur cette base distance, cad que la variable 'host' de cette dernière soit correctement renseignée (positionné à %, ce qui est bof, ou égale à ton ip/hôte)...

----------

## crevette

 *Niko wrote:*   

> c'est vrai que la doc concerne la creation d'une interface web avec CGI donc dans ton cas ya beaucoup de choses inutiles (   ) ... mais je pense que tu y trouveras les bases pour l'utilisation du module DBI de perl avec mysql ( point IV-1.2) ... je l'avais utilisé sans CGI et ca tournais bien 
> 
> ++

 

C'etait pas une critique mais pour orienter les reponse suivantes.

j'ai commencé a le lire, mais perl est complexe a première vue dans sa syntaxe.

Merci

----------

## arlequin

Utilises JAVA   :Wink: 

----------

## crevette

en fait mon script doit lire un fichier généré par xmms-infopipe et l'uploader dans une base mysql

----------

## arlequin

Hum........

Enfin, ça ressemble à quoi le fichier ?

Tu poster un extrait ?

----------

## crevette

```
more /tmp/xmms-info

XMMS protocol version: 2467

InfoPipe Plugin version: 1.3

Status: Playing

Tunes in playlist: 1

Currently playing: 1

uSecPosition: 5371

Position: 0:05

uSecTime: 352052

Time: 5:52

Current bitrate: 192000

Samping Frequency: 44100

Channels: 2

Title: Groove Armada - Easy

File: ///mp3/Groove Armada - LoveBox/10 - Easy.mp3
```

----------

## crevette

J'avais pas vu ton message Arlequin

 *arlequin wrote:*   

> En fait, je vois pas trop où est le problème ? Tu peux te connecter à distance sur une base mysql sans aucun soucis. Faut juste que t'es la permission sur cette base distance, cad que la variable 'host' de cette dernière soit correctement renseignée (positionné à %, ce qui est bof, ou égale à ton ip/hôte)...

 

Oui mais il faut un logiciel client pour se connecter a distance sur une base, tu peux pas te connecter en telnet sur le port mysql.

C'est pour ca que je voudrais trouver un moyen de me connecter (via DBI pour perl ou autre chose...)

Il me faudrait un peu d'aide.

voila

----------

## arlequin

Ben si t'as un langage de prédilection, tu peux utiliser UnixOdbc qui en est indépendant.

Bon, sinon... si je comprends à peu près bien, tu veux qu'à chaque fois que tu lis un mp3 avec xmms, il y ait un script qui lise le fichier, en extrait les infos nécessaires et les balance dans la base ? (sachant que le script peut-être lancé à intervalle régulier). C'est ça ?

----------

## crevette

ouaip c'est ca.

mais pour le langage je suis mal barré etant donné que je connais pas grand chose en programmation.

Donc je vais voir Perl mais j'ai encore plein d'autre truc a regler

----------

## arlequin

Bah, moi j'voyais plus un script shell utilisant grep, awk pour extraire les information du fichier et qui construirait une requête SQL (insert machin into...) enregistrée dans un fichier. Ensuite, ce fichier serait balancer à la commande 'mysql -u user -h serveur...' et pouf, finit...

Maintenant bon, c'est vrai que des clients pour mysql qui permettent ça, y en a pas à foison... et que la commande nommée ci-dessus nécessite l'install de l'ebuild mysql complète (enfin, je pense...).

Arf..................................................   :Wink: 

----------

## crevette

ben ouais en plus j'ai un pb sur mon authentification ssh par paire de cl"s qui ne marche pas, donc ca me limite pour l'instant a cette solution.

----------

## arlequin

J'ai vu... arf, chui entrain de préparer un exposé en sécurité sur SSH et chui même pas foutu de t'aider.........   :Sad: 

----------

## crevette

Bon ben quand on veut utiliser DBI::mysql, il faut installer mysql.

putain c'est pas cool ca.

il va falloir que j'installe mysql alors si je trouve rien d'autre

----------

## bouba

'lo!

Bon je lisais beaucoup jusqu'a maintenant sans jamais m'etre inscrit.

C'est fait maintenant!  :Smile: 

Bon, j'ai peut-etre bien une solution pour toi : Rebol.

Pas besoin de compiler quoi que ce soit et ca devrait en toute logique te permettre de faire ce que tu veux.  :Smile: 

tu trouveras des infos sur le langage et la possibilite de le downloader la :

http://www.rebol.com

et le script qui permet l'interface avec une base de donnees mysql la :

http://rebol.softinnov.org/mysql/mysql-099.rip

ainsi que la doc la :

http://rebol.softinnov.org/mysql

Le langage n'est carrement pas complique, l'evaluateur de base fait dans les 500 Ko, et ca ne necessite aucune lib pour fonctionner!  :Smile: 

Si tu as la moindre question, n'hesite pas!  :Smile: 

A+

Bouba

----------

## crevette

Merci bouba, mais comment j'interface ca avec dans un script avec des paramètres??

et puis je veux trop me lancer dans trop de truc?

si tu as un petit exemple sous le coude?

----------

## sebweb

Petite question HS :

Quelqu'un peut m'expliquer pourquoi il faut installer Xfree et qt quand on installe mysql ???

----------

## crevette

ben je veux pas trop le rapport.

normalement ya pas trop de relation.

regarde tes parametres USE et l'ebuild

----------

## Dom

Je comprend pas parce que j'ai lu l'ebuild et il n'y a ni X ni QT dans les dépendances et les paramètres USE relatifs à MySQL   :Shocked: 

----------

## Niko

petite idée qui me vient en contournant le probleme ...

plutot que de tenter une connexion distante a mysql, tu peux te contenter de faire un script qui decortique ton xmms-info sur ta workstation, puis envoyer seulement ces infos a ton serveur ou elles seront integrées a la base dans un second temps

par exemple:

- si tu as un serveur web et php sur la meme machine que mysql, tu y met une page php qui se charge simplement de l'update de ta base et ton script de "decorticage"  n'a plus qu'a lancer wget avec l'url qui va bien et qui contient les infos a rentrer.

- pour reprendre l'idée de fichier contenant directement la requete SQL d'arlequin, si tu as un acces FTP sur le serveur, tu y depose ton fichier sql et le client mysql deja installé sur le serveur vient le traiter en local

- ... tout autre moyen d'acces distant a ta machine qui te permettrait de passer tes infos et de les traiter sur le serveur ... reste a voir lequel serait le plus secure

voila ... une piste a explorer si tu n'arrive pas a etablir de connexion distante a mysql

++

----------

## sebweb

Autant pour moi, c'était pas mysql mais php   :Embarassed: 

Remarque le probleme reste le même, je vois pas pkoi j'ai besoin de Xfree pour php

----------

## Dom

En faisant un "emerge -pv <package>" tu obtiens la liste des paramètres USE dont dépend un programme. Ici, on voit que php dépend de X et de QT, parmi plein d'autres options :

sh-2.05b$ sudo emerge -pv php

These are the packages that I would merge, in order:

Calculating dependencies ...done!

[ebuild  N   ] dev-php/php-4.3.1  +truetype -postgres -tiff +libwww +nls +jpeg +readline +ssl -oci8 -mysql +X +gdbm -curl -imap +xml2 -xml -cjk +pdflib -qt -snmp +crypt -flash -odbc -ldap +berkdb -freetds -firebird +pam +spell 

Pour ne pas à avoir à installer X et QT, tu peux rajouter -X et -qt à ta variable USE. Si la modification est spécifique à ce programme, il suffit de faire un USE="-X -qt" emerge php

----------

## bouba

 *crevette wrote:*   

> Merci bouba, mais comment j'interface ca avec dans un script avec des paramètres??
> 
> et puis je veux trop me lancer dans trop de truc?
> 
> si tu as un petit exemple sous le coude?

 

un petit exemple d'insert, le voici, le voila!  :Smile: 

Contenu du script :

```

#!/usr/bin/rebol -cs

REBOL []

do %mysql-protocol.r

db: open mysql://<login>:<password>@<host>/<dbname>

query: "INSERT INTO toto (field1,field2,field3) VALUES (val1,val2,val3)"

insert db query

```

A voir, si tu as deux minutes pour regarder ca de plus pres!  :Smile: 

Bonne chance en tout cas!  :Smile: 

[/code]

----------

## crevette

Bon ben je vais compiler perl avec support mysql, ca me fait chier, c'est un peu lourd mais bon.

j'ai fais un petit script de test qui recupere des données, c'est vrai queu c'est tout con en perl.

je vais voir ce que ca donne, et je ferai profiter a tout ceux que ca interresse apres., si ca donne quelque chose

----------

