Menu

Shell + connexion à la base de données mysql [Résolu]

Lacapricorne 17 Messages postés mardi 6 février 2018Date d'inscription 8 février 2018 Dernière intervention - 7 févr. 2018 à 10:32 - Dernière réponse : Exileur 1261 Messages postés mercredi 31 août 2011Date d'inscription 25 mai 2018 Dernière intervention
- 8 févr. 2018 à 19:47
Bonjour,

j'ai un scrpit shell qui se connecte sur la base de données mysql, puis exporte les données en fichier.csv. Mais voila, je bloque là dessus, je ne parvient pas à me connecter sur la base de données, et je n'arrive pas à localiser l'erreur.Est-ce que quelqu'un peut m'aider s'il vous plait?
Voici un morceau de ma code source
#!/bin/sh
currentTimeStartExp=`date +'20%y-%m-%d %H:%M:%S'`
#currentfile="/data/barring/cdr_rated_$1"+".csv"
#currentfile="/data/tmp/cdr_rated_$1.csv"
#currentfile="/DWH2017/SAVE/Reste/cdr_rated_$1"+".csv"
if [ $# -eq 0 ]
then
    currentfile="/archives/exportbase/cdr_rated_"`date +'20%y-%m-%d' -d ' day'`".csv"
    currentdate=`date +'20%y-%m-%d' -d ' day'`
else
    currentfile="/archives/exportbase/cdr_rated_$1.csv"
    currentdate=$1
fi
echo "Start EXPORT $currentfile at $currentTimeStartExp"
#Declaring mysql BIG5 DB connection
DBIG_DB_USER='root'
DBIG_DB_PASSWD=''
DBIG_DB_PORT=3306
DBIG_DB_HOST='192.168.56.102'
DBIG_DB_NAME='mabd'
echo "Start connexion"
#mysql command to connect to database prod
/usr/bin/mysql -u $DBIG_DB_USER -p $DBIG_DB_PASSWD -P $DBIG_DB_PORT -h $DBIG_DB_HOST -D $DBIG_DB_NAME <<EOF
select * from bdorange.client into outfile '$currentfile' fields terminated by '|';
EOF
#currentTimeEndExp=`date +'20%y-%m-%d %H:%M:%S'`
echo "connexion done and export done"



Le echo "start connexion" s'affiche bien sur l'ecran, mais le : echo :" connexion done and export done " ne s'affiche pas. Aidez moi s'il vous plait.
Afficher la suite 

Votre réponse

24 réponses

UnGnU 832 Messages postés lundi 2 mai 2016Date d'inscription 25 mai 2018 Dernière intervention - 7 févr. 2018 à 10:47
0
Merci
Salut,

Ton précédent problème a été réglé ?

Si oui, la moindre des chose serait de le préciser et de clore le sujet, non ?

Sinon, rajoutes
set -xv
à ton script et poste le résultat ici.

Commenter la réponse de UnGnU
Lacapricorne 17 Messages postés mardi 6 février 2018Date d'inscription 8 février 2018 Dernière intervention - 7 févr. 2018 à 11:22
0
Merci
mon problème du sujet précédent a été reglé et dejà cloturé.Merci à toi.
rajouter set -xv?pourrait tu être plus précis s'il te plait?
Lacapricorne 17 Messages postés mardi 6 février 2018Date d'inscription 8 février 2018 Dernière intervention - 7 févr. 2018 à 16:17
mais ça ne marche pas et je m'y perd complètement :( :'(
UnGnU 832 Messages postés lundi 2 mai 2016Date d'inscription 25 mai 2018 Dernière intervention > Lacapricorne 17 Messages postés mardi 6 février 2018Date d'inscription 8 février 2018 Dernière intervention - 7 févr. 2018 à 16:22
/usr/bin/mysql -u "${DBIG_USER}" -p"${DBIG_DB_PASSWD}" -P '3306' -h '192.168.56.102' -D "${DBIG_DB_NAME}"
Lacapricorne 17 Messages postés mardi 6 février 2018Date d'inscription 8 février 2018 Dernière intervention - 7 févr. 2018 à 16:25
si je met -u 'root' à la place de -u '$DBIG_USER' l'erreur devient Access denied for user 'root'@'192.168.56.102' ... Je veux dire que ce soit root ou bien '$DBIG_USER' c'est toujours acces denied
UnGnU 832 Messages postés lundi 2 mai 2016Date d'inscription 25 mai 2018 Dernière intervention > Lacapricorne 17 Messages postés mardi 6 février 2018Date d'inscription 8 février 2018 Dernière intervention - 7 févr. 2018 à 16:29
Alors commençons par le début... l'utilisateur root est-il autorisé à se connecter à ton host (192.168.56.102) ?

A toute fin utile : ERROR 1045 (28000)
Lacapricorne 17 Messages postés mardi 6 février 2018Date d'inscription 8 février 2018 Dernière intervention - 7 févr. 2018 à 16:34
a mon avis oui parce que quand je fais la requete select User, Host from mysql.user il y a l'utilisateur root avec host dont la valeur est % qui est présent...
Commenter la réponse de Lacapricorne
Exileur 1261 Messages postés mercredi 31 août 2011Date d'inscription 25 mai 2018 Dernière intervention - Modifié par Exileur le 7/02/2018 à 21:34
0
Merci
Hello,

Dans ton code, le mot de passe est vide. Si c'est le cas, enléve le
-p $DBIG_DB_PASSWD
. Sinon ton script va s'attendre à un mdp en entré.

Sinon indique le mot de passe dans la variable en haut.

N'utilise pas de simple quote, comme l'a dit UnGnU, si tu veux que ta variable soit interpreter comme une variable, et non comme une chaine de caractére, utilise les doubles quote -> http://www.commentcamarche.net/forum/affich-35188329-shell-connexion-a-la-base-de-donnees-mysql#18

pour ce qui est de la DB, je ne met pas de -D généralement. Je fais appel aux bdd avec BDD.TABLE (ex :
users.passwords
). C'est plus propre de gérer ça au niveau de ta requéte :)

A plus :)

Edit : et il y a ça aussi ->

+ DBIG_DB_NAME=bdorange
select * from mabase.client

edit edit : et du coup, plutot que de te dire que la base n'existe pas (ce qui pourait être une faille), il te jette

N'oubliez pas de marquez votre post comme résolut lorsque vous avez eu les réponses à vos questions...
Au royaume des aveugles, les borgnes sont rois.
Lacapricorne 17 Messages postés mardi 6 février 2018Date d'inscription 8 février 2018 Dernière intervention - 8 févr. 2018 à 09:07
cela a fonctionner, je vous remercie infiniment...
Exileur 1261 Messages postés mercredi 31 août 2011Date d'inscription 25 mai 2018 Dernière intervention - 8 févr. 2018 à 19:47
np
Commenter la réponse de Exileur