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>
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.
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:
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.