Iniciando com MySQL – Parte 2
Neste artigo, daremos continuidade à série de artigos que tratam do início com o MySQL Server, e nesta parte recordaremos os tipos de conexão com o servidor já vistos no artigos anterior e novos parâmetros para seleção do tipo de protocolo, quais protocolos estão disponíveis para conexão com o servidor, geração de XML e HTML através de consultas, executando o mysql client em Batch e como executar scripts em arquivos do sistema operacional para criar objetos e dar carga em tabelas de um banco de dados do MySQL.
Após ler este artigo você será capaz de:
· Definir qual protocolo de comunicação o mysql client utiliza para se conectar ao servidor;
· Retornar consultas no formato XML;
· Retornar consultas no formato HTML;
· Iniciar o mysql client no formato Batch;
· Executar scripts em arquivo do sistema operacional;
Recordar é viver...
No artigo anterior, mostramos situações em que são utilizadas várias opções para conexão com o mysqld, através do mysql client, que é o utilitário de linha de comando para interação direta com a parte servidor do MySQL Server. As opções abordadas no artigos anterior foram:
-u : parâmetro que antecede o nome do usuário utilizado a conexão;
-p : parâmetro que antecede a senha, lembrando que, se digitarmos uma senha, esta deve ser digitada imediatamente após a parâmetro, sem espaços;
-h : parâmetro que antecede um hostname ou endereço IP;
-P : parâmetro que antecede o número da porta de conexão com o mysqld;
Além dos parâmetros acima, vistos com exemplos práticos no artigo 1, neste artigo veremos primeiramente os protocolos de conexão do mysql client com o servidor MySQL que é o mysqld.
A opção que pode ser utilizada para escolha do protocolo a ser utilizando para uma conexão com o servidor MySQL é --protocol. Antes de iniciarmos uma conexão, selecionando explicitamente qual protocolo usaremos, primeiramente, precisamos conhecer quais protocolos estão disponíveis.
A Figura 01 mostra os protocolos que são utilizados em Windows e Linux.
Figura 01. Protocolos utilizados para comunicação entre Cliente e Servidor MySQL.
Como podemos verificar na Figura 01, o protocolo TCP/IP é utilizado nas duas plataformas de sistemas operacinais, Windows e Linux/Unix. O socket, está disponível somente em sistema Linux/Unix. Named Pipes e Shared Memory são utilizados em ambiente Microsoft, disponível em Windows XP/2000/NT e em servidores mysqld com terminação nt, como o mysqld-nt ou mysql-max-nt, ambos descritos em suas características no artigo anterior desta série.
Casos particulares são somente as conexões via socket, named pipes e shared memory. O socket é criado no momento em que o MySQL Server é iniciado para uma conexão local no Linux/Unix, no diretório /var/run/mysqld/mysqld.sock. Caso sua conexão com o MySQL Server, mesmo que local, utilize o protocolo TCP/IP, o arquivo de socket não será utilizado.
Conexões em ambiente Windows também podem utilizar TCP/IP, mas estão disponíveis, embora desabilitados por padrão, conexões locais via Named Pipes que são conexões via Pipe Nomeado, habilitando iniciando o mysqld-nt ou mysqld-max-nt com a opção --enable-named-pipe. Shared Memory também só está disponível também para conexões locais no Windows e pode ser habilitada iniciando os servidores com terminação nt com a opção --shared-memory. Vale salientar que o Pipe padrão é MySQL.
Caso não mencionemos em uma conexão com o MySQL Server sem mencionar a opção
--protocol, o protocolo de conexão é determinado implicitamente, baseado no sistema operacional do client, que solicita a conexão e do servidor, que recebe a conexão.
No Windows, um client poderá estabilizar uma conexão através de uma conexão via pipe nomeado, especificando o ‘.’ (ponto) como referência a localhost. Caso named pipes não esteja habilitado, a conexão será efetivada via TCP/IP (Figura 02).
Figura 02. Verificando com \s o protocolo da conexão no Windows.
Em sistemas operacionais Linux/Unix, localhost é um caso particular. Mencionando localhost no comando de conexão, via client ou mesmo naquela conexão com uma aplicação escrita em PHP, força uma conexão via socket (Figura 03).
Figura 03. Verificando com \s o protocolo de conexão com localhost no Linux.
Respeitado então, as regras de protocolos disponíveis, podemos utilizar a opção já citada
--protocol para indicar, por exemplo, no Linux, uma conexão via TCP/IP.
XML
Após entender o funcionamento dos protocolos no MySQL, podemos seguir com o próximo tópico do artigos, agora mostrando como retornar um XML de uma determinada consulta. Para que isso seja possível, temos que informar a opção –X ou --xml em meio as opações de conexão do client com o server.
A Figura 04 exibe uma conexão com esta opção e retornando um XML de uma consulta à tabela users do banco de dados mysql, onde o user é igual a root, impondo a limitação em 1 resultado.
Figura 04. Retornando um XML de uma consulta específica.
Também se pode retornar o banco de dados em forma de backup no formato XML, com o mysqldump.
HTML
Para retornar um HTML de uma consulta específica, basta informar a opção –H ou –html, como segue na Figura 05.
Figura 05. Produzindo HTML como resultado de uma consulta.
Executando em BATCH
Por padrão, quando acessamos o MySQL via MySQL Client, os resultados são exibidos são delimitados por Tab, conhecido como tab-delimiter. Podemos iniciar a interação com o servidor em forma Batch para execução de algum script localizado em um arquivo localizado no sistema operacional ou mesmo uma carga no banco de dados. Com a opação –B podemos ter esse efeito no prompt ou terminal.
Vamos executar então um arquivo com o comando SOURCE, cujo conteúdo do arquivo é “SELECT VERSION();”, salvo com o nome “teste.txt”, na raiz da partição C:\, no filesystem do Windows. A Figura 06 exibe tal execução.
Figura 06. Executando um arquivo do sistema operacional através do comando SOURCE no modo BATCH.
Uma observação a fazer é que, se o comando SQL estiver errado e resultar num erro de compilação, o prompt do mysql client será finalizado, como mostra a Figura 07.
Figura 07. Comando SQL com erro de compilação e término do prompt do mysql client.
Conclusão
Neste artigo, passamos pelos atributos e opções básicos para manipulação do mysql client em conexão com o mysqld ou o MySQL Server. Passamos pelo conceito de protocolos, criação de resultados nos formatos XML e HTML e executando arquivos localizados no sistema operacional em modo BATCH com o comando SOURCE.
Referência Bibliográfica
· MySQL 5.0 Reference Manual - http://dev.mysql.com/doc/refman/5.0/en/