Instalando um servidor MySQL para uso geral

Muita gente boa tem dificuldades para instalar um servidor de bases de dados com MySQL mas essa tarefa não tão complicada quanto se imagina devido isso não vou me prender a detalhes técnicos e definições porque isso já tem demais por ai e inclusive a documentação oficial já traz tudo isso.

A minha idéia com esse tutorial é: (1) Poder apagar um arquivo com este texto que está ocupando espaço no meu pen-driver desde o ano passado sem perdê-lo; e (2) Poder ajudar o nosso amigo Sysadmin, “marujo de primeira viagem”, que recebeu esta tarefa do seu novo chefe e até agora não sabe nem por onde começar.

O sistema Operacional

A primeira coisa que você vai precisar é de uma distribuição Linux já instalada e funcional em que você tenha a senha do super-usuário (root). Eu vou partir do principio que você esteja usando uma distribuição “Debian-like”, tal como Ubuntu, Knoppix, Kurumin ou a própria Debian puro sangue!

Claro que o MySQL está disponível em praticamente todas as distribuições GNU/Linux atuais e você poderá escolher qualquer uma a seu gosto, mas com certeza nem todas serão tão práticas quanto é com as “Debian-like”. Eu, como muitos já devem saber, uso Ubuntu nos meus desktops e Debian em cada um dos 9 servidores, tanto os reais, quanto virtuais*.

Se você pretende montar um servidor de testes ou para uso pessoal você pode usar sua própria estação para instalar o MySQL, mas se a ideia é armazenar dados mais sérios pense na hipótese de usar um servidor dedicado a esta tarefa, preferivelmente sem ambiente gráfico, sem webserver etc (mesmo que seja um servidor virtualizado*) na qual você possa instalar o basico do seu sistema e em seguida o MySQL com suas dependências.

Instalando

Pra quem está começando essas instruções iniciais são suficientes, então vamos por a mão na massa … digo, linha de comandos (logado como root, é claro). Se você já está com um terminal aberto e logado como root então você só precisa emitir os dois comandos abaixo para instalar o MySQL:

1# aptitude update
2# aptitude install mysql-server mysql-client

O primeiro apenas atualiza a lista de pacotes para que você consiga fazer o download da última versão disponível. Como dificilmente surgiria duas atualizações no mesmo dia, se você acabou de instalar o Debian (ou outra) e atualizou o sistema via web então pode ignora-lo.

O segundo efetivamente instala o serviço do MySQL que realmente mantém e controla o acesso as bases de dados e também o cliente em modo texto que permitirá o acesso as nossas bases via linha de comando do servidor sem que precisemos instalar ferramentas complicadas baseadas na WEB ou em ambientes gráficos. Dificilmente você precisará dele, mas assim como mantemos um extintor de incêndios em nosso carro… façamos o mesmo com o MySQL!

A partir daí o MySQL já está instalado e funcionando. Meus parabéns, é simples assim … quero dizer … é … Tá bom admito: Ele está bem limitado ainda. Mas ainda assim você tem que concordar comigo. Ele já está instalado e realmente funcionando, tanto é assim que se você quiser acessa-lo apenas localmente com o usuário root via linha de comandos ele está OK e poderá fazê-lo agora!

Preparando para acesso remoto

Na prática, em um ambiente de produção (com os dados reais de sua empresa), se você pretende fazer consultas remotamente, por exemplo a partir de um programa feito na linguagem A, B, C ou etc e que está instalado localmente em cada estação dos seus usuários, você não conseguirá conectar ao seu servidor. Isso porque por padrão a MySQL em habilitado para trabalhar apenas localmente necessitando uma modificação simples em sua configuração para que ele possa escutar as requisições vindas de sua rede.

Para resolver isso você terá que editar um arquivo de configuração e salvá-lo (no exemplo abaixo eu uso o nano, mas poderia ser o vi, emacs, mc, pico etc):

1# nano /etc/mysql/my.cnf

  1. Procure pela linha onde está escrito:
    bind-address = 127.0.0.1
  2. Ao achá-la coloque um sinal de “#” a frente dela deixando-a assim:
    #bind-address = 127.0.0.1
  3. Salve o arquivo e saia do nano teclando: CTRL+S / CTRL+X

Em seguida é necessário reiniciar o serviço. Com o comando abaixo. Não é preciso rebootar o servidor (isso é coisa de Windows):

1# invoke-rc.d mysql restart
ou
2# /etc/init.d/mysql restart
ou ainda
3# service mysql restart

Criando um usuário administrativo

Excelente, seu servidor está instalado e você já pode acessá-lo remotamente, mas com qual usuário? E a senha? A partir de onde? Quais bases podem ser usadas?

Nós só dissemos ao MySQL que ele deverá atender solicitações externas, mas não dissemos ainda de quem, nem a que! É como uma portaria de prédio, ela fica aberta, os visitantes podem entrar ali a vontade, mas só entra efetivamente no prédio quem se identificar e tiver credenciado a isso. O que temos de fazer então é criar as credenciais com o comando abaixo:

# mysql_setpermission

Obs.: Caso ele peça uma senha, apenas tecle ENTER, pois não há senha definida para o usuário root do mysql (não confundir com o usuário root do seu sistema) acessar as bases de dados localmente.

Este comando abrirá um menu muito do sem-vergonha, feio e assustador. O que realmente faremos aqui vai ser criar UM usuário administrativo com privilégio para acessar TODAS as bases de dados do nosso servidor remotamente e a partir de ALGUMAS estações da nossa rede. Se você quiser criar outros até pode, mas eu normalmente crio apenas este primeiro usuário e os demais crio a partir de uma ferramenta gráfica conectada remotamente.

Você observará que as opções do menu são numeradas. Então …

  1. Escolha a opção: [6] Criar/Incluir privilégios plenos para uma combinação bando de dados e host existentes (O usuário terá total privilégio).
  2. Digite * para que o seu usuário tenha permissão de gerenciar todas as bases de dados (já que é um administrador geral não seria interessante definir o nome de uma base de dados especifica)
  3. Digite um ‘username’ bacana para o seu usuário (administrador, guru ou seja lá o que você quiser)
  4. Responda “y” para a próxima pergunta para que este usuário só possa logar mediante o uso de uma senha.
  5. Guess! Digite uma senha confiável
  6. Digite novamente para assegurar que digitou o que pretendia
  7. Informe o endereço IP da máquina a partir de onde este usuário poderá acessar o banco de dados. Como este usuário é altamente privilegiado o ideal é que você defina umas poucas máquinas com permissão para usá-lo.
    Obs: Para indicar uma faixa de rede use o símbolo ‘%’. Ex: 192.168.1.% indica que toda a faixa de IPs 192.168.1.0/24 (1 até 254) poderá usar esta conta, mas tratando de uma conta administrativa quanto menos endereços usar esta conta mais seguro será. Eu particularmente não permitiria um usuário com este nível de privilégio conseguisse conexão de mais do que uma ou duas máquinas.
  8. Se você deseja incluir mais de uma faixa de rede ou endereços individuais responda “yes” a pergunta que será feita (e proceda como no passo anterior, do contrário responda “no”.
  9. Serão exibidos os dados da nova conta e uma pergunta se você confirma que os dados estão corretos. Responda “Yes” e em seguida “0” (zero) para sair

Somente isso!

Um pouco sobre a segurança do seu DBserver

O seu acesso remoto se dará a partir das máquinas nas faixas de rede configuradas e com esta conta de usuário. Se desejar depois você poderá repetir o mesmo processo para criar outros usuários, mas sugiro que não dê tantos privilégios assim. Se você for instalar um blog por exemplo, crie um usuário que tenha permissão de acesso apenas a base de dados daquela aplicação; Se você pretende permitir a alguém fazer datamining em alguma base limite-o àquela base e com permissões apenas para consultas. A regra de ouro é sempre oferecer pouco e liberar por demanda os acessos adicionais.

Além das permissões de acesso você ainda pode instalar um firewall neste servidor limitando o acesso a porta tcp/3306 (porta de escuta do Mysql server) apenas as máquinas que realmente vão precisar acessá-lo. Isso vai minimizar o risco de algum hacker do outro lado do planeta conseguir atacar seu servidor.

Ferramentas para administração remota

Como eu havia dito lá no começo o mysql-client é apenas um extintor de incêndios e não é muito conveniente usá-lo no dia-a-dia. Existem inúmeras ferramentas para gerenciamento de bases MySQL, mas eu particularmente tenho três ferramentas úteis e que eu gosto muito de usar.

Ferramenta WEB

O phpMyAdmin é uma excelente ferramenta para gerenciamento de servidores MySQL e que pode ser acessada de qualquer lugar a partir de um navegador WEB. Diversos serviços de hospedagem comerciais que alugam bases MySQL para os seus clientes disponibilizam uma interface dessa para gerenciamento.

Eu recomendo que você instale o Apache com o phpMyAdmin em uma máquina a parte do seu servidor de bases de dados, pode ser inclusive no seu servidor WEB em produção ou outro que você queira. Um servidor virtualizado* só com ferramentas administrativas, por exemplo seria uma boa pedida.

Por hora, não vou abordar sua instalação mas partindo do princípio que o seu servidor MySQL já está funcionando com um usuário possuindo privilégios administrativos e com acesso remoto então um “aptitude install phpmyadmin” certamente resolverá sua questão e depois basta aponta-lo para o seu servidor com aquele usuário e senha já criados.

Ferramentas locais

Caso não possa dispor de um servidor WEB ou ainda prefira um aplicativo rodando localmente em sua máquina então as duas ferramentas essenciais que se precisa para administrar um servidor MySQL são:

  • MySQL -Administrator
  • MySQL Query Browser

Assim como no caso do phpMyAdmin a instalação de ambos é feita a partir do aptitude:

# aptitude install mysql-admin mysql-query-browser

Só vale deixar aqui uma observação importante: Algumas versões antigas do MySQL Administrator tem um bug na administração de usuários que só permite entrar nesta seção depois que você entrar na seção de “catálogos” (banco de dados) e clicar em todos os bancos existentes. Caso não faça isso a aplicação irá travar devendo ser fechada e aberta novamente.

Monitoramento Local

Existem umas ferramentas para monitoramento local em modo texto e bastante rudimentares que você poderá instalar no seu servidor também com o comando:

# aptitude install mytop mtop

Mas com certeza existem coisas melhores inclusive via WEB, com gráficos etc.

4 comentários em “Instalando um servidor MySQL para uso geral”

  1. oi gente o meu problema e que nao tenho permissao para assessar o mysql
    do meu sistema …..
    pedie todos os meu clientes cadfastrados
    como fçao pra ele voltar a fucionar????
    ele da o seguinte erro:
    Can’t connect to local MySQL server through socket ‘/var/run/mysql/mysql.sock’ (13) Can’t connect to local MySQL server through socket ‘/var/run/mysql/mysql.sock’ (13)

  2. @JuruaNet
    Opá,

    Rapaz assim fica difícil ajudar. Dê mais detalhes. Onde você está tentando conectar? como? Com que cliente?

    Passe mais informações para que possamos ajudá-lo. Provavelmente você esqueceu de ajustar algo. Tente reler o tutorial e veja se não esqueceu de nada e poste sua dúvida caso não tenha entendido algum passo.

  3. Olá,

    Instalei o MySQL 5.5 no Ubuntu Server pelo apt-get install mysql-server.

    Qndo tento acessar com qualquer login o MySQL permite acesso. Isso não é estranho? Por exemplo:

    $ mysql -u sdfgsfvf
    $ mysql -u qweqw
    $ mysql -u qualquer_texto

    Eu nunca criei estes usuário e eles não estão cadastrado na tabela mysql.user. O que tá acontecendo?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.