Revista Do Linux  
EDIÇÃO DO MÊS
  A música da Internet
  Banco de Dados
  Bibliotecas
  CD do Mês
  Em modo texto
  Governador do Software Livre
  Grandes e Pequenos
  Linux no iMac
  Mensagem .doc
  Operação Resgate
  Periféricos Complicados
  Segurança

MySQL Server: velocidade
Conhecido por ser extremamente rápido e robusto, o MySQL é muito fácil de ser instalado no servidor Linux. É a solução mais econômica para redes mistas


Fernando Augusto Medeiros Silva
fernando@pcplace.com.br
Florencio Guimarães Mariz Filho
florencio@pcplace.com.br

MySQL é um servidor de banco de dados SQL, que opera em múltiplas plataformas, abrangendo todas as variedades Linux, AIX, FreeBSD, Irix e até Windows 95/98/NT.

Para plataformas Unix e OS/2, o MySQL é gratuito. E para a maioria das aplicações, você só paga pelo MySQL se ele estiver incluído em alguma aplicação.

Entre suas características principais, destacam-se:

  • Extremamente rápido e robusto;
  • Reconhece vários tipos de dados,incluindo VARCHAR, TEXT, BLOB, DATETIME, TIMESTAMP,SET e ENUM;
  • Possui interfaces com C, C++, Java, Perl,PHP, Python e TCL;
  • Interface para ODBC e JDBC;
  • Sistema de privilégio de acesso robusto e seguro, com controle de acesso por computador do acesso por usuário, e também a banco de dados, tabelas e colunas.

Como limitações, podemos citar a ausência de replicação, controle de transações, integridade referencial, cursores no servidor e stored procedures.

Instalação

A última versão estável do MySQL, recomendada para instalação, é a 3.22.32. O pacote RPM atualizado está em www.mysql.org, e você precisa instalar, no mínimo, os de servidor: web.mysql.com/Downloads/MySQL-3.22/MySQL-3.22.32-1.i386.rpm e cliente: web.mysql.com/Downloads/MySQL-3.22/MySQL-client-3.22.32-1.i386.rpm.

Opcionalmente, podem ser instaladas as bibliotecas de desenvolvimento: web.mysql.com/Downloads/MySQL-3.22/MySQL-devel-3.22.32-1.i386.rpm.

O pacote RPM instalará os bancos de dados em /var/lib/mysql, não admitindo realocação via RPM. Assim, é bom reservar espaço suficiente para os bancos de dados na partição /var.

Configuração

Uma vez instalado, o MySQL está pronto para ser utilizado. A primeira coisa a fazer é alterar a senha do usuário root com o comando:

# mysqladmin -u root password `novasenha'

Ao iniciar, o servidor procura pelo arquivo /etc/my.cnf, contendo parâmetros para inicialização, como número da porta e arquivo de socket. A instalação padrão grava um arquivo /usr/share/mysql/my-example.cnf, que copiado para /etc/my.cnf, pode ser utilizado como base para alterações nos parâmetros iniciais do servidor.

Além das opções gerais, na seção [mysqld] podemos especificar variáveis que afetam o desempenho e/ou o comportamento do MySQL. O arquivo exemplo já contém algumas previamente definidas :


set-variable = key_buffer=16M
set-variable = max_allowed_packet=1M
set-variable = thread_stack=128K


  • Key_buffer: quantidade de memória reservada para buffer de índices. O valor padrão é 8388600, ou 8MB. Um valor mais elevado melhora o manuseio de índices, mas não se deve elevá-lo a ponto de não sobrar memória, afetando o desempenho global.
  • max_allowed_packet: Tamanho máximo de um pacote de dados. Normalmente, 1MB, mas deve ser elevado caso se queira utilizar BLOBs de tamanho superior a esse.
  • thread_stack: Tamanho da pilha para cada thread. O valor padrão é 64K, suficiente para a maioria das operações. Em caso de falha em operações complexas, aumente esse valor.

Outras variáveis interessantes são:

  • flush-time: Caso seja informado um valor não-zero, indica um número de segundos para que todas as tabelas sejam periodicamente fechadas e seus dados gravados no disco.
  • long_query_time: Se uma consulta demorar mais que este valor, em segundos, o contador Slow_queries será incrementado. O valor atual deste contador pode ser visto com mysqladmin extended-status.
  • max_connections: Número máximo de clientes simultâneos. Normalmente cem, mas você pode aumentar se necessário.
  • sort_buffer: Normalmente 2MB, valor que pode ser aumentado para agilizar consultas com as cláusulas Order By e Group By.
  • log-update: Permite indicar o nome de um arquivo para registrar todos os comandos que atualizam dados. Útil para replicação de banco de dados e para recuperação.

Para uma lista completa das variáveis, use o comando mysqld -help e para uma lista dos valores em vigor, mysqladmin variables.

Administração

O comando mysqladmin pode ser utilizado para uma variedade de tarefas. As mais úteis são:

  • create bancodedados: cria novo banco de dados com o nome especificado.
  • drop bancodedados: remove um banco de dados e todas as suas tabelas.
  • extended-status: mostra os valores de todas as variáveis atuais do servidor.
  • flush-hosts: remove da memória as informações de conexão de todos os computadores. No caso de dez falhas de conexão, um computador tem seu acesso bloqueado até a execução desse comando.
  • flush-logs: Reabre todos os arquivos de logs.
  • flush-privileges: necessário após alteração nas tabelas de controle de acesso.
  • password: troca a senha de um usuário.
  • ping: verifica se o servidor está respondendo.
  • shutdown: encerra a execução do servidor.

Outro comando bastante útil é o mysqldump, que permite gravar em um arquivo texto todos os comandos SQL necessários para criar uma cópia de um banco de dados inteiro ou de uma ou mais tabelas. Gera o comando Create Table para cada tabela e Insert Into, para cada linha existente na tabela.

Cliente MySQL

Um aliado na utilização do MySql é o cliente mysql, com ele é possível administrar o servidor, criar tabelas, bases de dados, manipular dados no melhor estilo DBA. Para entrar no shell interativo:


#mysql -h host -u user -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 459 to server version:3.22.20a-log
Type `help' for help.
mysql>

É possível também executar scripts no banco usando a stdin do cliente:


shell> mysql -h host -u user -p < script
Enter password: ********
Criando uma base de exemlo:
#mysql -u root -p < criabanco
#criabanco - Banco de dados de exemplo
#Fernando Augusto & Florencio Guimarães
#22/03/2000
create database exemplo;

use exemplo;


create table usuarios(
id          INT AUTO_INCREMENT NOT NULL,
nome        VARCHAR(36),
telefone    VARCHAR(15),
endereco    VARCHAR(50),
nascimento  DATE,
senha       VARCHAR (15),
primary key (id)
);

Inserindo dados:


mysql> insert into usuarios (NULL, `usuario1',`555-5226','Ruas dos Bobos n 0', `1900-01-01 00:00', crypt(`senha') );
mysql> insert into usuarios VALUES (NULL,'linux',`222-2222','Esquina das listas','1991-01-01', encrypt(`saudade'));
mysql> insert into usuarios VALUES (NULL,`garfield',`342-5689','Alam.das massas 140','1978-06 19',encrypt(`lazanha'));

selecionando dados:

mysql> select * from usuarios;
3 rows in set (0.00 sec)
mysql>
id nome telefone endereço nascimento senha
1 usuario1 555-5226 Ruas dos Bobos n 0 1900-01-01 08TaLh2u7LorM
2 linux 222-2222 Esquina das listas 1991-01-01 bBSh3hDv5hCMQ
3 garfield 342-5689 Alam. das massas 140 1978-06-19 QGDyWV/RRMats

Nota-se o uso da função encrypt. É a mesma da senha do Linux, assim é possível criar bases de dados de usuário com segurança.

Interfaces

PHP - o módulo de interface PHP/Apache com suporte para MySQL pode ser encontrado em ftp.conectiva.com.br/pub/conectiva/dsk/cls42pt/i386/conectiva/RPMS/mod_php3-mysql-3.0.12-1cl.i386.rpm.

A configuração do Apache para funcionamento com PHP3 pode ser um pouco trabalhosa, necessitando de inclusão de diretivas no arquivo httpd.conf. Consulte a documentação do Apache e do PHP3. Uma vez instalado, podemos obter dados de bancos de dados MySQL diretamente em páginas HTML. Um pequeno exemplo poderia ser:


<html>
<title>Exemplo de consulta Mysql/PHP3</title>
<body>
<?php
  print "Lista de Usuarios<P>";
  mysql_connect(localhost,root,'');
  mysql_select_db(exemplo);
  $dados = mysql_query("SELECT * FROM usuarios");
  if ($linha = mysql_fetch_array($dados)){
  do {
      print $linha["id"];
      print (" ");
      print $linha["nome"];
      print (" ");
      print $linha["endereco"];
      print (" ");
      print $linha["nascimento"];
      print ("<BR>");
    } while ($linha = mysql_fetch_array($dados));
  } else {
     print "Nenhum usuario encontrado.";
  }
?>
</body>
</html>

ODBC

O MyODBC é uma implementação de conector ODBC para o MySQL, que permite acessar o banco de dados facilmente através de clientes Windows. Disponível no site web.mysql.com/download_myodbc.html, nas versões Win 95 ou NT, é muito simples de instalar. Após descomprimir o arquivo zip e executar o instalador, Windows com o driver MySQL. A configuração do driver é mais simples ainda: você dá um nome para o DSN, coloca o nome ou endereço do servidor, base de dados, usuário e senha. Depois é só usar.

 

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade