Mudando o mysql bind-address dentro de um script

8

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.

    
por nonsenz 26.03.2014 / 12:18

4 respostas

8

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 
    
por 31.03.2014 / 08:51
16

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:

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

Melhor ainda (para permitir uma saída mais limpa)

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

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)

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
    
por 03.07.2014 / 20:57
1
augtool -s set '/files/etc/mysql/my.cnf/target[ . = "mysqld"]/bind-address 0.0.0.0'

O pacote do Ubuntu é chamado de 'augeas-tools'

    
por 30.09.2015 / 07:09
0

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 .

    
por 26.03.2014 / 12:40