#1 Le 08/05/2012, à 13:35
- waca
Commandes mysql dans un .sh à lancer dans /etc/init.d
Bonjour à tou(te)s,
Ubuntu11.04
Je voudrais qu'une commande 'mysql' s’exécute au démarrage d'ubuntu (pas au démarrage d'une session user).
Je fais donc un script (mais est-ce bien un script 'bash' à faire pour lancer des commandes mysql)? :
bon, je fais donc un fichier
#! /bin/bash
mysql -u root -pmonpasswd
grant all privileges on *.* to labase@localhost identified by 'lepasswd';
exit 0
J'enregistre le fichier sous
grant.sh
je le copie dans /etc/init.d
sudo cp grant.sh /etc/init.d
Je le met en 'exécutable'
sudo chmod +x /etc/init.d/grant.sh
puis dans le rc
sudo update-rc.d grant.sh defaults
Ben voilà, il ne se lance pas
Où est-ce que je me plante svp ?
Merci.
Waca
Hors ligne
#2 Le 10/05/2012, à 14:15
- Postmortem
Re : Commandes mysql dans un .sh à lancer dans /etc/init.d
Salut,
Ton bash devrait plutôt être comme ceci :
#!/bin/bash
mysql -u root -pmonpasswd << !FIN_SQL
grant all privileges on *.* to labase@localhost identified by 'lepasswd';
exit
!FIN_SQL
À tester, ça fait longtemps que j'ai pas touché à mysql !
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#3 Le 12/05/2012, à 04:22
- waca
Re : Commandes mysql dans un .sh à lancer dans /etc/init.d
Merci, je viens d'essayer, mais ça ne fonctionne pas....
En fait, j'explique mon soucis.
J'ai une VM/Ubuntu11.04 accessible via FreeNX par 5 users.
Dès que je redémarre la VM, les users n'ont plus accès à la base mysql, sauf si, en terminal, je tapes ces 2 commandes
mysql -u root -pmonpasswd
grant all privileges on *.* to labase@localhost identified by 'lepasswd';
D'où l'idée, si je dis à un user de redémarrer la VM, pour pas qu'il ait à saisir lui-même ces commandes, donc de mettre ces 2 commandes directement dans le init.d
J'ai donc rajouté
<<!FIN_SQL
comme tu l'as suggéré, mais après redémarrage, la base n'est quand mm pas accessible, je ne sais donc pas si la commande s'est bien exécutée !
Aurais-tu d'autres suggestions ?
Merci d'avance.
Waca.
Hors ligne
#4 Le 12/05/2012, à 07:51
- credenhill
Re : Commandes mysql dans un .sh à lancer dans /etc/init.d
hello
capturer des messages d'erreur, ajouter
mysql -u root -pmonpasswd << !FIN_SQL >> /tmp/log 2>&1
Hors ligne
#5 Le 12/05/2012, à 10:06
- Postmortem
Re : Commandes mysql dans un .sh à lancer dans /etc/init.d
Salut,
J'ai donc rajouté
<<!FIN_SQL
comme tu l'as suggéré, mais après redémarrage, la base n'est quand mm pas accessible, je ne sais donc pas si la commande s'est bien exécutée !
T'as bien rajouté le !FIN_SQL tout seul sur sa ligne après les commandes (pas d'espaces ou tabulations avant et après) ?
Sinon, fais comme t'as dit credenhill afin d'avoir un log.
Ça donne donc ça :
#!/bin/bash
mysql -u root -pmonpasswd << !FIN_SQL >> /tmp/log_mysql 2>&1
grant all privileges on *.* to labase@localhost identified by 'lepasswd';
exit
!FIN_SQL
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#6 Le 14/05/2012, à 07:57
- waca
Re : Commandes mysql dans un .sh à lancer dans /etc/init.d
Merci, j'ai un log qui dit :
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Ca me cause vachement
Waca.
Hors ligne
#7 Le 15/05/2012, à 12:47
- credenhill
Re : Commandes mysql dans un .sh à lancer dans /etc/init.d
je ne connais pas mysql, mais est-ce mysql a déjà démarré quand ce script s'exécute?
Hors ligne
#8 Le 16/05/2012, à 10:47
- waca
Re : Commandes mysql dans un .sh à lancer dans /etc/init.d
Ben euh, la commande est dans le
init.d
alors à savoir si
mysql est déjà lancé ??? !!!
Hors ligne