Quel serait le meilleur moyen de changer l'adresse de liaison mysql dans le fichier my.cnf à partir d'un script shell? Existe-t-il un moyen d'utiliser un outil tel que mysqladmin ou devrais-je utiliser sed ou devrais-je simplement l'ajouter au fichier my.cnf et espérer que la deuxième entrée écrase la première (celle-ci semble mauvaise). J'essaie d'écrire un simple provisionneur shell pour Vagrant qui s'exécute après l'installation de mysql-server pour permettre les connexions depuis l'extérieur de la machine virtuelle.
Réponses
Trop de publicités?Ajoutant à ce qui a été dit par @nonsenz, si vous utilisez les scripts de provisionnement de puphpet.com, vous pouvez ajouter un fichier bash au dossier /puphpet/files/startup-always et y placer toutes vos commandes. À chaque démarrage ou rechargement de Vagrant, le script sera appelé :
mysql.sh
#!/bin/bash
echo "Mise à jour des configurations de mysql dans /etc/mysql/my.cnf."
if [ 'sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf' ]; then
echo "Adresse de liaison mysql mise à jour dans /etc/mysql/my.cnf à 0.0.0.0 pour permettre les connexions externes."
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
fi
Mieux encore (pour une sortie plus propre)
mysql.sh
#!/bin/bash
echo "Mise à jour des configurations de mysql dans /etc/mysql/my.cnf."
sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
echo "Adresse de liaison mysql mise à jour dans /etc/mysql/my.cnf à 0.0.0.0 pour permettre les connexions externes."
sudo service mysql stop
sudo service mysql start
Cela m'a permis de connecter mon IDE (PhpStorm) directement à la base de données de ma machine hôte via Vagrant. Bien sûr, j'ai donné à l'utilisateur mysql invité l'accès à '%' et j'ai redirigé le port 3306 de l'invité vers un port (3309) sur l'hôte. L'octroi d'accès pourrait également être fait dans ce fichier.
Mieux encore (ajout d'exécution mysql)
mysql.sh
#!/bin/bash
echo "Mise à jour des configurations de mysql dans /etc/mysql/my.cnf."
sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
echo "Adresse de liaison mysql mise à jour dans /etc/mysql/my.cnf à 0.0.0.0 pour permettre les connexions externes."
echo "Attribution de l'accès utilisateur mysql user1 sur %."
sudo mysql -u user1 -pvotreMotDePasse --execute "GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%' IDENTIFIED BY 'votreMotDePasse' with GRANT OPTION; FLUSH PRIVILEGES;" votrebasededonnées
echo "Accès utilisateur mysql user1 attribué sur tous les hôtes."
sudo service mysql stop
sudo service mysql start
Il semble que vous recherchiez Augeas.
La page du projet est ici et certains documentations et exemples sont ici. MySQL est inclus sur la page des lentilles de base mais malheureusement les liens vers la documentation mènent maintenant à une page 404.
Il y a aussi quelques exemples de son utilisation avec Puppet ici.