В дополнение к сказанному @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, а не ошибками в сценарии.