Parece que sed é a maneira mais fácil neste contexto (após uma instalação limpa):
sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
Qual seria a melhor maneira de alterar o endereço de ligação mysql no my.cnf a partir de um script de shell? Existe uma maneira de usar uma ferramenta como mysqladmin ou devo usar sed ou devo simplesmente anexá-lo ao my.cnf e espero que a segunda entrada substitua a primeira (este parece doente). Eu tento escrever um simples provisionador de shell para o vagrant que roda depois de instalar o mysql-server para permitir conexões de fora da VM.
Adicionando ao que foi dito por @nonsenz, Se você usar os scripts de provisionamento do puphpet.com, então você pode adicionar um arquivo bash à pasta / puphpet / files / startup-always e colocar todos os seus comandos lá. Sempre que o vagrant iniciar ou recarregar, ele chamará o script:
#!/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
Melhor ainda (para permitir uma saída mais limpa)
#!/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
Isso me permitiu conectar meu IDE (PhpStorm) diretamente ao banco de dados em minha máquina convidada via vagrant. É claro que dei ao usuário guest mysql acesso a '%' e redirecionei a porta 3306 no guest para uma porta (3309) no host. A concessão de acesso também pode ser feita neste arquivo.
Ainda melhor (mysql execute add in)
#!/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
augtool -s set '/files/etc/mysql/my.cnf/target[ . = "mysqld"]/bind-address 0.0.0.0'
O pacote do Ubuntu é chamado de 'augeas-tools'
Parece que você está procurando Augeas .
A página do projeto está aqui e algumas documentação e exemplos estão aqui. O MySQL está incluído na página de lentes de estoque , mas infelizmente a documentação está vinculada a uma página 404 agora.
Existem também alguns exemplos de uso do Puppet aqui .
Tags mysql vagrant shell provisioning