В дополнение к сказанному @nonsenz: если вы используете сценарии инициализации puphpet.com, вы можете добавить bash-файл в папку / puphpet / files / startup-always и поместить туда все свои команды. Каждый раз, когда vagrant запускается или перезагружается, он вызывает скрипт:
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
Еще лучше (для более чистого вывода)
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
Это позволило мне подключить мою IDE (PhpStorm) напрямую к базе данных на моей гостевой машине через vagrant. Конечно, я предоставил гостю mysql доступ к «%» и перенаправил порт 3306 гостя на порт (3309) хоста. Предоставление доступа также может быть сделано в этом файле.
Even Better'er (mysql выполнить добавить в)
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
, за исключением нескольких маленьких битов (коробка CentOS 6.5) - Использование привело к ошибке «извините, у вас должен быть tty» (исправлено просто удалением «sudo» из операторов), и моя служба MySQL была перезапущена с помощью/etc/init.d/mysqld stop
и/etc/init.d/mysqld start
. Оба из них могут быть просто причудами CentOS, а не ошибками в сценарии.Похоже, что sed - это самый простой способ в этом контексте (после чистой установки):
источник
Пакет Ubuntu называется augeas-tools
источник
-s
«автоматически сохранять любые обновления».set
это действие, которое Augeas предпримет с этой линией./files/etc/mysql/my.cnf
над какой частью / файлом будет работать Augest (он загружает все / etc)./target
является («массивом») декодированных значений.[ . = "mysqld"]
выбирает тот номер цели, который имеет значение «mysqld».bind-address
поле адреса привязки в разделе «mysqld», а значение после пробела0.0.0.0
- это значение, которое будет установлено.Похоже, вы ищете Augeas .
Страница проекта находится здесь, а некоторые документы и примеры здесь. MySQL включен на странице стандартных линз, но, к сожалению, документация ссылается на страницу 404.
Здесь также есть несколько примеров использования его в Puppet .
источник