Wenn Sie die Bereitstellungsskripte von puphpet.com verwenden, können Sie dem Ordner / puphpet / files / startup-always eine Bash-Datei hinzufügen und alle Ihre Befehle dort ablegen. Jedes Mal, wenn Vagrant startet oder neu lädt, wird das Skript aufgerufen:
mysql.sh
#!/bin/bash
echo "Updating mysql configs in /etc/mysql/my.cnf."
if [ 'sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf' ]; then
echo "Updated mysql bind address in /etc/mysql/my.cnf to 0.0.0.0 to allow external connections."
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
fi
Noch besser (um eine sauberere Ausgabe zu ermöglichen)
mysql.sh
#!/bin/bash
echo "Updating mysql configs in /etc/mysql/my.cnf."
sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
echo "Updated mysql bind address in /etc/mysql/my.cnf to 0.0.0.0 to allow external connections."
sudo service mysql stop
sudo service mysql start
Dadurch konnte ich meine IDE (PhpStorm) über Vagrant direkt mit der Datenbank auf meinem Gastcomputer verbinden. Natürlich habe ich dem Gast-MySQL-Benutzer Zugriff auf '%' gewährt und Port 3306 auf dem Gast an einen Port (3309) auf dem Host weitergeleitet. Die Zugriffsgewährung kann auch in dieser Datei erfolgen.
Noch besser (MySQL ausführen Add-In)
mysql.sh
#!/bin/bash
echo "Updating mysql configs in /etc/mysql/my.cnf."
sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
echo "Updated mysql bind address in /etc/mysql/my.cnf to 0.0.0.0 to allow external connections."
echo "Assigning mysql user user1 access on %."
sudo mysql -u user1 -pyourpassword --execute "GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%' IDENTIFIED BY 'yourpassword' with GRANT OPTION; FLUSH PRIVILEGES;" yourdatabase
echo "Assigned mysql user user1 access on all hosts."
sudo service mysql stop
sudo service mysql start
sudo
führte zu einem Fehler "Entschuldigung, Sie müssen einen tty haben" (behoben durch einfaches Entfernen von 'sudo' aus den Anweisungen) und mein MySQL-Dienst wurde mit neu gestartet/etc/init.d/mysqld stop
und/etc/init.d/mysqld start
. Beides sind möglicherweise nur CentOS-Macken und keine Fehler im Skript.Es sieht so aus, als wäre sed in diesem Zusammenhang der einfachste Weg (nach einer Neuinstallation):
quelle
Das Ubuntu-Paket heißt 'augeas-tools'
quelle
-s
ist "Updates automatisch speichern".set
Diese Aktion wird Augeas mit dieser Zeile durchführen./files/etc/mysql/my.cnf
Welcher Teil / welche Datei Augest bearbeitet (es werden alle / etc geladen)./target
ist ein (? Array?) dekodierter Werte.[ . = "mysqld"]
wählt die Zielnummer aus, die den Wert "mysqld" hat.bind-address
ist das Feld für die Bindungsadresse im Abschnitt "mysqld", und der Wert nach dem Leerzeichen0.0.0.0
ist der Wert, auf den es gesetzt wird.Klingt so, als ob Sie nach Augeas suchen .
Die Projektseite ist hier und einige Dokumentationen und Beispiele sind hier. MySQL ist auf der Seite mit den Standardobjektiven enthalten, aber leider verweist die Dokumentation jetzt auf eine 404-Seite.
Es gibt auch einige Beispiele für die Verwendung in Puppet .
quelle