+ Responder ao Tópico



  1. #1
    Sempre na luta Avatar de jacksonezidio
    Ingresso
    Jun 2008
    Localização
    São Paulo - SP
    Posts
    208
    Posts de Blog
    1

    Post Acesso remoto ao servidor Mysql

    Nessa dica quero mostrar como configurar o servidor Mysql para acesso remoto, no sentido de você poder se conectar nele de qualquer lugar.
    Nos meus testes utilizei dois micros, um notebook como cliente e um micro com o servidor Mysql rodando.
    Os dois possuem o sistema operacional Ubuntu 10.10, então vamos lá!

    Esquema básico do básico:

    192.168.0.105 187.50.245.123
    Cliente Mysql --------------->> Servidor Mysql


    O Firewall
    Tive que desenvolver uma maneira de fazer meus shell script's conversarem com esse servidor remotamente e tive a curiosidade de verificar a performance dessa conexão, como possuo uma routerboard com RouterOS Mikrotik tive que fazer um redirecionamento de portas para o meu servidor mysql, ficando assim:

    --->> 187.50.245.123:3306 -->> 192.168.0.200:3306

    Explicando: Toda requisição direcionada ao meu ip público na porta 3306 será redirecionada para o meu servidor mysql na porta 3306.

    A regra para isso é nada mais que um dst-nat no meu ip público, segue a regra:
    RouterOS regra:

    /ip firewall nat
    add action=dst-nat chain=dstnat comment="redir server mysql" disabled=no \
    dst-address=187.50.245.123 dst-port=3306 protocol=tcp to-addresses=\
    192.168.0.200 to-ports=3306

    O redirecionamento do firewall está pronto, agora é necessário configurar o servidor Mysql para aceitar as conexões de fora e dar privilégios ao usuário.

    O Servidor Mysql
    Altere a seguinte linha do arquivo /etc/mysql/my.cnf:
    bind-address = 127.0.0.1

    Altere para:
    bind-address = 0.0.0.0

    Perceba o risco de segurança. você pode permitir somente certo ip, a finalidade aqui é didática não vou discutir segurança.

    Agora é necessário acessar o prompt mysql do servidor para dar direitos de acesso ao seu usuário.
    No meu caso aqui é usuário default mesmo, o root, e a senha configurada foi a "toor":


    root@ubuntu:~# mysql -uroot -ptoor
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 179
    Server version: 5.1.49-1ubuntu8.1 (Ubuntu)

    Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    This software comes with ABSOLUTELY NO WARRANTY. This is free software,
    and you are welcome to modify and redistribute it under the GPL v2 license

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    mysql>

    Ok, comando para dar privilégios totais ao usuário root, de qualquer micro na rede local ou remota:

    mysql> GRANT ALL ON *.* TO root@'%' IDENTIFIED By 'toor';
    Query OK, 0 rows affected (0.00 sec)

    Observação importante para que não haja confusão:
    Aqui no servidor Mysql está sendo dado o direito de acesso de qualquer lugar fora do mesmo micro, mas ainda assim é necessária a correta configuração de firewall para que as conexões ser realizadas com sucesso.


    O cliente
    No micro cliente você precisa ter o cliente mysql instalado, se ainda não tiver instale com:
    Se for Debian ou derivado
    # apt-get install mysql-client-core-5.1

    Se for outra distribuição use o sistema de instalação da mesma ou baixe os fontes no site oficial.

    A sintaxe para conexão remota é:
    mysql --host=endereçoip -u usuario -psuasenha

    No meu caso sendo:
    # mysql --host=187.50.245.123 -u root -ptoor




    Ok, conexão feita com sucesso!

    Nos meus testes cada query realizada dessa forma remota utilizava uma média de 9 pacotes de dados totalizando 660 bytes.

    Segue imagens:

    1º query: Cadastro de um contato em uma agenda
    681 bytes - 9 pacotes
    http://4.bp.blogspot.com/_VOhxpd-Xu2...0/insercao.png


    2º query: Consulta de um contato em uma agenda
    agora totalizaram 1319 e 18 pacotes.
    http://1.bp.blogspot.com/_VOhxpd-Xu2...0/consulta.png



    Em se tratando de performance eu não percebi lentidão nos meus testes, seria necessário mais testes para se chegar à uma conclusão concreta sobre isso, tanto que também depende da banda de internet usada em cada lado.

    Na próxima publicação falarei um pouco sobre shell script na conexão remota com o banco de dados.
    É isso, espero que possa ajudar alguém!

    Artigo original no meu blog: Tecnologia em Redes e Servidores
    Miniaturas de Anexos Miniaturas de Anexos Clique na imagem para uma versão maior

Nome:	         insercao.jpg
Visualizações:	458
Tamanho: 	68,9 KB
ID:      	19090  

  2. #2

    Padrão Re: Acesso remoto ao servidor Mysql

    obrigado pela dica, me ajudou aqui.

  3. #3
    Sempre na luta Avatar de jacksonezidio
    Ingresso
    Jun 2008
    Localização
    São Paulo - SP
    Posts
    208
    Posts de Blog
    1

    Padrão Re: Acesso remoto ao servidor Mysql

    Citação Postado originalmente por silverlord Ver Post
    obrigado pela dica, me ajudou aqui.
    Opa fico contente! quero montar umas dicas sobre automatização de acesso com shell script, está me faltando tempo mas vou tentar montar logo.. ;D

  4. #4

    Padrão Re: Acesso remoto ao servidor Mysql

    Muito obrigado pela ajuda, mesmo um post de 5 anos atrás me salvou.

    Não tinha a mínima ideia de como rodar o mysql server de forma remota, agora um computador antigo com linux e o my sql server estão bombando aqui em casa.