Conexão MySQL – Servidor Local e Externo

Fala pessoal,

Um probleminha muito comum que me atrapalhava quando eu não usava frameworks é ficar configurando o arquivo de conexão do MySQL pra servidor local e externo… Ao longo dos anos vim criando métodos mais eficazes e esse aqui eu criei hoje.

Esse script tem uma vantagem enorme: ele decide qual configuração de conexão usar em função do domínio que está sendo utilizado pra acessar o site!

Por exemplo: Se você estiver acessando o site pelo 127.0.0.1 ele usa a configuração de conexão local, se estiver acessando por um domínio escolhido, thiagobelem.net por exemplo, ele usa outra configuração… Não tem limite de configurações, você pode definir quantas quiser.

Vamos ao script:

/**
*  Arquivo de conexão ao MySQL usando servidor local e externo
*/
$n = -1;


// Define os servidores e configurações de cada conexão

$n++;
$MySQL[$n]['dominios']  = array('127.0.0.1', 'localhost'); // Possíveis dominios
$MySQL[$n]['servidor']  = '127.0.0.1'; // Servidor MySQL
$MySQL[$n]['usuario']   = 'root'; // Usuário MySQL
$MySQL[$n]['senha']     = ''; // Senha MySQL
$MySQL[$n]['banco']     = 'meu_banco'; // Banco de dados
$MySQL[$n]['persis']    = false; // Conexão persistente?

$n++;
$MySQL[$n]['dominios']  = array('thiagobelem.net', 'thiagobelem.com.br');
$MySQL[$n]['servidor']  = '127.0.0.1'; // Servidor MySQL
$MySQL[$n]['usuario']   = 'meu_usuario'; // Usuário MySQL
$MySQL[$n]['senha']     = 'minha_senha'; // Senha MySQL
$MySQL[$n]['banco']     = 'meu_banco'; // Banco de dados
$MySQL[$n]['persis']    = false; // Conexão persistente?


// Decide qual conexão usar
foreach ($MySQL as $key=>$servidor) {
    if (!isset($_SERVER['HTTP_HOST'])) {
        $usar = $key;
        break;
    } else {
        $encontrado = false;
        foreach ($servidor['dominios'] as $dominio) {
            if (strpos($_SERVER['HTTP_HOST'], $dominio) !== false) {
              $usar = $key;
              $encontrado = true;
              break;
            }
        }
        if ($encontrado)
            break;
    }
}

// Decide o tipo de conexão
$MySQL['conexao'] = ($MySQL[$usar]['persis']) ? 'mysql_pconnect' : 'mysql_connect';

// Conecta-se ao servidor usando o tipo de conexão definido
$MySQL['link'] = $MySQL['conexao']($MySQL[$usar]['servidor'], $MySQL[$usar]['usuario'], $MySQL[$usar]['senha']) or die("Não foi possível se conectar ao servidor MySQL no endereço [".$MySQL[$usar]['servidor']."]");

// Conecta-se ao banco de dados
mysql_select_db($MySQL[$usar]['banco'], $MySQL['link']) or die("Não foi possível conectar-se ao banco de dados [".$MySQL[$usar]['banco']."] no servidor [".$MySQL[$usar]['servidor']."]");

Pra criar mais uma configuração de conexão é só duplicar esse bloco:

$n++;
$MySQL[$n]['dominios']  = array('thiagobelem.net', 'thiagobelem.com.br');
$MySQL[$n]['servidor']  = '127.0.0.1'; // Servidor MySQL
$MySQL[$n]['usuario']   = 'meu_usuario'; // Usuário MySQL
$MySQL[$n]['senha']     = 'minha_senha'; // Senha MySQL
$MySQL[$n]['banco']     = 'meu_banco'; // Banco de dados
$MySQL[$n]['persis']    = false; // Conexão persistente?

Gostaram? Ele tá todo comentado.. Qualquer dúvida é só comentar! =)

Abraços

Documentação Oficial:

  • Arrays » Cria um array (matriz com vários elementos)
  • Função strpos() » Encontra a primeira ocorrencia de uma string em outra string
  • Função mysql_connect() » Abre uma conexão com o servidor MySQL
  • Função mysql_pconnect() » Abre uma conexão persistente com o servidor MySQL
  • Função mysql_select_db() » Conecta-se a um banco de dados disponível no servidor MySQL

9 ideias sobre “Conexão MySQL – Servidor Local e Externo

  1. Richard

    Nunca pensei em desenvolver uma função assim. sempre tinha dois arquivos que eu vivia renomeando, um local e outro para enviar ao servidor.

    muito boa essa função.

  2. Aurélio

    Thiago, obrigado!
    Eu já conhecia o serviço NO-IP , mas nem imaginava que pudesse utiliza-lo
    Me ajudou muito.

    Mais uma vez, obrigado

  3. Aurélio

    Estou com uma DUVIDA ENORME … criei o servidor, consegui acessar o blog e inclusive instalar plugins e trocar o template.
    Mas agora não sei qual, de onde e nem como faço pra colocar um endereço que eu possa passar pras pessoas.
    http://localhost/ não pode ser!

    Alguem poderia me dar essa luz???

    Obrigado

  4. Machizu

    Gostaria de saber se na opção de conexão externa, coloca 127.0.0.1.

    $n++;
    2 $MySQL[$n][‘dominios’] = array(‘thiagobelem.net’, ‘thiagobelem.com.br’);
    3 $MySQL[$n][‘servidor’] = ‘127.0.0.1’; // Servidor MySQL <<<<<<<<< AQUI
    4 $MySQL[$n]['usuario'] = 'meu_usuario'; // Usuário MySQL
    5 $MySQL[$n]['senha'] = 'minha_senha'; // Senha MySQL
    6 $MySQL[$n]['banco'] = 'meu_banco'; // Banco de dados
    7 $MySQL[$n]['persis'] = false; // Conexão persistente?

    grato!

  5. Nelson Ramalho

    Cara!!! Muito obrigado mesmo, eu estava quebrando a cabeça pra poder editar um site em php, não conseguia de jeito nenhum conecçao com o banco, com esse script foi so copiar e funcionou perfeitamente vc é um genio, felicidades.
    nelson

Os comentários estão fechados.