Fichier bash avec mysql
Fermé
xunil2003
-
Modifié par xunil2003 le 25/07/2012 à 17:04
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 26 juil. 2012 à 09:17
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 26 juil. 2012 à 09:17
A voir également:
- Fichier bash avec mysql
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Fichier host - Guide
4 réponses
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
25 juil. 2012 à 20:31
25 juil. 2012 à 20:31
A priori tu as une erreur dans ta commande shell :
Déjà à ce stade je ne sais pas si tu as fait un retour à la ligne derrière le FROM mais si c'est le cas c'est le premier problème.
Le second problème c'est qu'il y a un guillemet de trop derrière LIKE '$recherche%'".
Par rapport à la structure de ton code j'écrirais plutôt un truc du genre :
Autre point, le profil de base (password, login, encodage) ne devraient pas être dans script mais dans la configuration du client mysql (~/.my.cnf) car ils changent potentiellement d'un utilisateur à l'autre. De plus comme ton script requiert des droits en lecture, si ce script était utilisable par plusieurs utilisateurs, il pourraient tous voir le mot de passe en clair. Si au contraire le mot de passe est stocké dans ~/.my.cnf, le problème ne se pose plus et tu peux définir des droits restreints sur ce fichier.
Tu peux par exemple mettre dans ~/.my.cnf :
... et ensuite :
Bonne chance
Mysql1="mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes FROM $nom_table WHERE $colonne_recherche LIKE '$recherche%'" "
Déjà à ce stade je ne sais pas si tu as fait un retour à la ligne derrière le FROM mais si c'est le cas c'est le premier problème.
Le second problème c'est qu'il y a un guillemet de trop derrière LIKE '$recherche%'".
Par rapport à la structure de ton code j'écrirais plutôt un truc du genre :
mysql="mysql -h '$hote_db' -D '$nom_bd' -u '$login_db' -p'$pass_bd' --default-character-set='$format_texte' -B -N" query="select cmu from bash like 'A4'" eval $mysql -e "$query;"
Autre point, le profil de base (password, login, encodage) ne devraient pas être dans script mais dans la configuration du client mysql (~/.my.cnf) car ils changent potentiellement d'un utilisateur à l'autre. De plus comme ton script requiert des droits en lecture, si ce script était utilisable par plusieurs utilisateurs, il pourraient tous voir le mot de passe en clair. Si au contraire le mot de passe est stocké dans ~/.my.cnf, le problème ne se pose plus et tu peux définir des droits restreints sur ce fichier.
Tu peux par exemple mettre dans ~/.my.cnf :
[client] port=3306 user="my_sql_user" password="my_password"
... et ensuite :
chmod 600 ~/.my.cnf
Bonne chance
Bonjour,
c'est sur un serveur, il y a un seul utilisateur en ssh uniquement.
avec ceci
il me rèpond dans le terminal
merci.
c'est sur un serveur, il y a un seul utilisateur en ssh uniquement.
avec ceci
#!/bin/bash mysql="mysql -h '$hote_db' -D '$nom_bd' -u '$login_db' -p'$pass_bd' --default-character-set='$format_texte' -B -N" query="select cmu from bash like 'A4'" eval $mysql -e "$query;" $mysql
il me rèpond dans le terminal
root@debian:/var/www/maison/N4/X10# sh /home/serveur/Domotique/ordres/ordre-a4-test.sh eval: 1: -e: not found mysql: Character set ''utf8'' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file /home/serveur/Domotique/ordres/ordre-a4-test.sh: 2: Syntax error: word unexpected (expecting ")") root@debian:/var/www/maison/N4/X10#
merci.
bonsoir,
ceci non plus ne fonctionne pas.
Pour comme ceci ça marche
Merci.
ceci non plus ne fonctionne pas.
mysql="mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p "$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes FROM $nom_table WHERE $colonne_recherche LIKE '$recherche%'"
root@debian:/var/www/maison/N4/X10# sh /home/serveur/Domotique/ordres/ordre-a4-test.sh /home/serveur/Domotique/ordres/ordre-a4-test.sh: 2: Syntax error: Unterminated quoted string root@debian:/var/www/maison/N4/X10#
Pour comme ceci ça marche
mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes FROM $nom_table WHERE $colonne_recherche LIKE '$recherche%'"
root@debian:/var/www/maison/N4/X10# sh /home/serveur/Domotique/ordres/ordre-a4-test.sh cm15 A4 On root@debian:/var/www/maison/N4/X10#
Merci.
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
26 juil. 2012 à 09:17
26 juil. 2012 à 09:17
Pas compris le dernier message. Ça marche ou pas ?