1
resposta

Falha na conexão ao banco de dados via index.php

Prezados,

Fiz toda a configuração do Vagrant via public_network e consigo realizar a conexão do banco de dados pelo host. Contudo, ao abrir a página PHP, dá erro de conexão ao banco.

1) A conexão no host está sendo feita com a seguinte URL jdbc:mysql://10.37.1.50:3306

2) Página index.php

<?php
    echo "<h2>Funcionou \o/!</h2>";
    echo "<div>Testando conexão com o banco de dados</div>";

    $servername = "10.37.1.50";
    $username = "phpuser";
    $password = "pass";

    // Create connection
    $conn = new mysqli($servername, $username, $password);

    // Check connection
    if ($conn->connect_error) {
        die("<div><b>Conexão falhou:</b> " . $conn->connect_error . "</div>");
    } 
    echo "<div>Conectado com sucesso!</div>";
?>

3) O arquivo de configuração mysql.cnf do MySQL está com a configuração bind-address = 0.0.0.0. Segue a configuração do Vagrantfile:

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/bionic64"

  config.vm.define "mysqldb" do |mysql|
    # mysql.vm.network "forwarded_port", guest: 80, host: 8089
    # config.vm.network "private_network", type: "dhcp"
    mysql.vm.network "public_network", ip: "10.37.1.50"

    mysql.vm.synced_folder "./configs", "/configs"
    mysql.vm.synced_folder ".", "/vagrant", disabled: true

    mysql.vm.provision "shell", inline: $script_copy_public_key
    mysql.vm.provision "shell", inline: $script_install_mysql
    mysql.vm.provision "shell", inline: $script_copy_mysql_conf
  end

  config.vm.define "phpweb" do |phpweb|
    phpweb.vm.network "forwarded_port", guest: 8888, host: 8888
    phpweb.vm.network "public_network", ip: "10.37.1.51"

    phpweb.vm.provision "shell", inline: $script_install_puppet

    phpweb.vm.provision "puppet" do |puppet|
      puppet.manifests_path = "./configs/manifests"
      puppet.manifest_file = "phpweb.pp"
    end
  end
end

4) Arquivo de configuração do puppet phpweb.pp:

exec { 'apt-update': 
    command => '/usr/bin/apt-get update'
}

package { ['php7.2', 'php7.2-mysql']:
    require => Exec['apt-update'],
    ensure => installed
}

exec { 'run-php7': 
    require => Package['php7.2'],
    command => '/usr/bin/php -S 0.0.0.0:8888 -t /vagrant/src &'
}
1 resposta

Olá, Alice!

Posso estar errado, mas acho que faltou especificar as portas do mysqldb no Vagrantfile.

config.vm.define "mysqldb" do |mysql|
    mysql.vm.network "forwarded_port", guest: 3306, host: 3306
    mysql.vm.network "public_network", ip: "10.37.1.50"

    mysql.vm.synced_folder "./configs", "/configs"
    mysql.vm.synced_folder ".", "/vagrant", disabled: true

    mysql.vm.provision "shell", inline: $script_copy_public_key
    mysql.vm.provision "shell", inline: $script_install_mysql
    mysql.vm.provision "shell", inline: $script_copy_mysql_conf
  end

Conte para gente se funcionou.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software