No primeiro de uma série de tutoriais sobre o phpMyAdmin, vamos aprender aqui como instalar esta poderosa ferramenta e como configurá-la corretamente para termos todos os recursos disponíveis e utilizá-la depois.
1. Introdução
O MySQL é um banco de dados popular que é bastante utilizado em aplicações Web. Por exemplo, praticamente todo sistema de gerenciamento de conteúdo de portais tem suporte MySQL, as empresas de web hosting também oferecem sempre, além de ser fácil instalar e começar a usar logo de cara. O banco de dados é software livre, o que indica que você pode baixar e usar à vontade, sem precisar pagar ou obter algum tipo de licença.
Mas uma vez que o banco de dados foi instalado, muita gente sente falta de um gerenciador para ele, algo que possa criar ou visualizar as tabelas, executar comandos SQL, mudar configurações de usuários, fazer backups do conteúdo e tudo mais. Uma ótima solução para fazer isto é usar o phpMyAdmin, uma poderosa ferramenta de gerenciamento MySQL feita inteiramente em PHP, o que significa que funciona em ambiente Web e por isso, na maioria dos sistemas operacionais e navegadores.
Segundo a documentação do programa, estas são as tarefas que o phpMyAdmin pode fazer atualmente:
- Visualizar, remover, criar, copiar, renomear e alterar bancos de dados, tabelas, campos e índices.
Manutenção do servidor, bancos de dados e tabelas, com sugestões para a configuração do servidor. - Executar, editar e guardar qualquer comando SQL, mesmo em série.
- Carregar arquivos de texto em tabelas.
- Criar ou ler dumps de tabelas e bancos de dados, com suporte à arquivos GZip, Bzip2, Zip (quando habilitados no PHP).
- Exportar dados para vários formatos: CSV, XML, PDF, OpenDocument Text e Spreadsheet (ISO/IEC 26300), Word, Excel e LATEX.
- Administrar múltiplos servidores de um único local/sistema.
- Gerenciar usuários e privilégios do MySQL.
- Verificar integridade referencial em tabelas MyISAM.
- Usar Query-by-example (QBE) – Consulta por exemplo – para criar conslutas complexas conectando automaticamente as tabelas necessárias.
- Criar gráficos PDF do layout dos bancos de dados.
- Procurar em um banco de dados inteiro ou em alguma parte específica.
- Transformar dados armazenados em qualquer formato usando funções pré-definidas.
- Suporte ao tipo de tabelas InnoDB e chaves estrangeiras (foreign keys).
- Suporte ao mysqli, uma extensão MySQL aprimorada.
- 55 idiomas disponíveis
Versões Disponíveis
No momento deste tutorial, existem duas versões do phpMyAdmin disponíveis:
- 2.11.x – Amplamente utilizado, necessário PHP 4.2 ou superior e MySQL 3.23.32 ou superior.
- 3.x – Recentemente lançada, necessário PHP 5.2 ou superior e MySQL 5.0.12 ou superior.
Como a versão 3.x, desenvolvida por muito tempo, está agora estável e totalmente funcional, é recomendado que se utilize ela em novas instalações. Lembre-se de ter instalado as versões necessárias do PHP e MySQL para isso.
Em outros casos, a versão da série 2.x pode ser a melhor escolha para sistemas mais antigos. Lembre-se que ao usar esta versão, pode ser que você não encontre algum recurso que poderia estar na série 3.x.
Para baixar, basta entrar na página principal do phpMyAdmin e clicar nos links de download no canto superior esquerdo (Quick Downloads), você será redirecionado para o SourceForge e o download será feito do mirror mais próximo. Neste tutorial, baixei em formato .zip, mesmo preferindo o .bzip2.
2. Instalação
Tanto no Windows quanto no Linux, a instalação do phpMyAdmin é bem tranqüila. Neste tutorial estaremos usando a nova versão – 3.x – como referência. Entretanto, as instruções aqui também são válidas para a versão 2.11.x, que tem o processo de instalação bastante parecido.
Comece acessando o site do phpMyAdmin e obtendo o arquivo do programa. Recomendo pegar a versão contendo todas os idiomas (all languages) e codificação UTF-8. Sendo assim, pegue um dos dois arquivos (podendo variar a versão):
- phpMyAdmin-3.0.0-all-languages.zip
- phpMyAdmin-2.11.9.2-all-languages-utf-8-only.zip
A versão all-languages contém a tradução da interface para 55 idiomas e o idioma pode ser escolhido na configuração ou na hora que o usuário for usar o programa. A versão UTF-8 (a 3.0 já é totalmente utf-8 por padrão) permite que acentos e outros caracteres não-comuns de outras línguas sejam usados de forma unificada e suportada pelo navegador, sendo sempre uma boa opção.
Também, é recomendado você ter o seguinte disponível:
- Extensão PHP mcrypt, para criptografia mais rápida/robusta;
- Extensão PHP zip, bzip2, gzip, para compactação dos arquivos de importação/exportação;
- Extensão PHP gd2, para visualização de thumbnails de imagens.
Descompacte o arquivo baixado no diretório onde as páginas estão sendo servidas. No Linux, por exemplo, podemos descompactar no /var/www (Debian ou derivados) ou /var/www/html:
$ cd /var/www $ unzip ~/download/phpMyAdmin-3.0.0-all-languages.zip
No Windows, basta descompactar no diretório onde está configurado o htdocs do Apache. Por exemplo, C:\Apache2.2\htdocs.
Será criado um diretório do phpMyAdmin (o nome varia de acordo com a versão) com o conteúdo do programa. Para facilitar as coisas aqui, vou renomear o nome deste diretório para apenas phpmyadmin (tudo em minúsculo). Dica: no Linux criei um link simbólico.
O sistema agora já (!) está instalado. Se você tem o Apache + PHP configurados corretamente e funcionando, acesse:
http://localhost/phpmyadmin/
Nota: Substitua ‘localhost‘ pelo endereço IP ou nome do servidor que você instalou o phpMyAdmin. Nesse caso instalei na minha máquina local.
Você será presenteado com uma tela de erro, dizendo que o sistema não conseguiu acessar o banco de dados e que provavelmente você não criou uma configuração. Não é que ele está certo?
3. Configuração
Existem duas formas de se configurar o phpMyAdmin, editando manualmente a configuração ou utilizando um script de setup online que cria a configuração para você. Na minha opinião, editar o arquivo manualmente é mais fácil e rápido, por isso vamos começar dessa forma.
Abra o arquivo config.sample.inc.php, comece localizando a linha:
$cfg['blowfish_secret'] = '';
E colocando um valor qualquer e aleatório nesta variável, assim por exemplo:
$cfg['blowfish_secret'] = 'kldsf8235h2fp0sfj3othz4bhqn4209bus';
Essa é uma string aleatória que vai ser usada na hora de gerar a criptografia de algumas senhas.
Agora identifique as outras linhas:
$i++; $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['extension'] = 'mysql';
Pode ser necessário mudar o valor do host para o IP do servidor. Mas como aqui estamos usando a própria máquina local, localhost serve. A configuração acima nos diz para o phpMyAdmin utilizar o sistema de autenticação cookie (usuário e senha são pedidos via formulário na página principal e lembrados até que o navegador seja fechado ou um tempo sem usar se passe), o servidor de banco de dados que será usado está em localhost, conectando via TCP (pode ser socket também), sem usar compactação de páginas no servidor (se seu Apache/PHP tiver, o que é bem provável, ative com true) e a extensão PHP que será utilizada é a mysql (se você possuir a extensão mysqli ativada, use-a no lugar).
Opcional: Se você quiser adicionar mais servidores de bancos de dados, sendo possível o usuário escolher na hora de login, basta apenas colocar as linhas anteriores novamente, modificando seus dados para refletir o novo servidor. Por exemplo, logo depois da confguração anterior, coloco as linhas:
$i++; $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['host'] = 'mysql.dominio.com.br'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = true; $cfg['Servers'][$i]['extension'] = 'mysqli';
Desta forma além do banco de dados em localhost, poderei acessar também o banco de dados em mysql.dominio.com.br.
Depois de configurado esses parâmetros básicos, salve o arquivo como config.inc.php. Agora acesse novamente o endereço do phpMyAdmin no navegador:
http://localhost/phpmyadmin/
Desta forma o phpMyAdmin já foi configurado. O aviso na imagem vermelha indica que a extensão mcrypt do PHP não está instalada e que é recomendado que você instale e ative-a (no caso de estar usarmos o método de autenticação cookie, que é o nosso caso), caso contrário, a ferramenta ficará mais lenta ou até mesmo não funcionar (máquinas de 64-bits). Se você seguiu as recomendações anteriormente, isso não deverá aparecer ;-)
Ao se logar (aqui me loguei como root), vemos a seguinte tela:
A partir daí você já pode mexer na ferramenta como um todo, mas ainda há algumas coisas que podemos fazer para extender as funcionalidades do programa.
4. Extensão das funcionalidades
Além das funcionalidades básicas do phpMyAdmin – Criar usuários, tabelas, consultar, inserir, remover, importar, exportar, etc – é possível também extender a configuração para poder usar bookmarks, comentários, histórico de comandos SQL, geração de PDF dos dados, transformação de conteúdo, entre outros.
A razão por essas funcionalidades não estarem habilitadas por padrão é que elas necessitam de uma tabela própria no banco de dados, separado dos usuários. O processo consiste em criar um usuário especial do phpMyAdmin que será utilizado pela ferramenta transparentemente, habilitando assim as funcionalidades. Como isto pode ser muito útil, vamos aqui configurar!
4.1. Criando o usuário
Começamos criando um usuário chamado pma. Na própria ferramenta phpMyAdmin, depois de logado como root (administrador), selecione a aba Privilégios (Privileges).
Logo abaixo da tabela que será mostrada, clique em Adicionar novo usuário (Add new user).
Preencha com o nome do usuário, o local de onde ele vai se conectar (caso o phpMyAdmin esteja localizado em outro servidor sem ser o mesmo do banco de dados) e a senha. Marque também a opção Criar banco de dados com o mesmo nome e conceder todos os privilégios (Create database with same name and concede all privileges).
4.2. Criando o usuário via linha de comando
Caso queira usar a linha de comando e não o phpMyAdmin, no servidor, conecte-se ao banco de dados:
$ mysql -u root -p Enter password: <digite a senha> Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 37 Server version: 5.0.51a-15-log (Debian) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
Crie um banco de dados chamado pma:
mysql> CREATE DATABASE pma DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
Depois crie o usuário chamado pma e dê todas as permissões do banco de dados pma:
mysql> GRANT ALL PRIVILEGES ON pma.* TO pma@localhost IDENTIFIED BY 'senha' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES;
Pronto. CTRL+D para sair da linha de comando do MySQL.
4.3. Importando as tabelas
Agora será necessário importar a estrutura de tabelas do phpMyAdmin. Para fazer isso via interface do phpMyAdmin, deslogue-se como root e logue-se com o usuário pma.
Em seguida, selecione no menu da esquerda o banco de dados pma. Depois clique na Aba Importar.
Abra o arquivo create_tables.sql dentro do diretório scripts onde você descompactou o phpMyAdmin e comente (colocando dois hífens e um espaço no começo da linha) as seguintes linhas:
-- CREATE DATABASE IF NOT EXISTS `phpmyadmin` -- DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; -- USE phpmyadmin;
Depois salve o arquivo.
De volta à interface do phpMyAdmin, em Localização do arquivo texto (Location of the text file), selecione o arquivo create_tables.sql que você editou e salvou.
Clique em Importar, então a estrutura estará pronta para o uso do phpMyAdmin e agora só será preciso configurá-lo para saber disto.
4.4. Importando as tabelas via linha de comando
Para importar a estrutura de tabelas via linha de comando MySQL, vá ao diretório scripts dentro de onde você descompactou o phpMyAdmin, abra o arquivo create_tables.sql e comente (colocando dois hífens e um espaço no começo da linha) as seguintes linhas:
-- CREATE DATABASE IF NOT EXISTS `phpmyadmin` -- DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; -- USE phpmyadmin;
Depois salve o arquivo. Então digite o comando:
$ mysql -u pma -p pma < create_tables.sql Password: <digite a senha do usuário pma>
E pronto, a estrutura estará pronta para o uso do phpMyAdmin e agora só será preciso configurá-lo para saber disto.
4.5. Configurando o phpMyAdmin para as novas funcionalidades
Será necessário agora informar ao phpMyAdmin sobre esse novo usuário e seu banco de dados. Para fazer isso, abra o arquivo config.inc.php dentro da raiz do phpMyAdmin e configure as linhas:
$cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Servers'][$i]['controlpass'] = 'pmapass';
Estas e as linhas à seguir provavelmente estarão comentadas (com “// ” no começo da linha), será necessário descomentá-las, deixando exatamente como mostrado aqui.
Nestes parâmetros, controluser e controlpass, coloque os valores correspondentes ao usuário e senha criados anteriormente. O phpMyAdmin se conectará ao banco de dados com esse usuário quando necessitar usar as novas funcionalidades.
Em seguida, localize a linha:
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
E modifique para:
$cfg['Servers'][$i]['pmadb'] = 'pma';
O parâmetro pmadb indica o nome do banco de dados que criamos, que no nosso caso é o pma.
Por último, descomente as linhas à seguir:
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark'; $cfg['Servers'][$i]['relation'] = 'pma_relation'; $cfg['Servers'][$i]['table_info'] = 'pma_table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma_column_info'; $cfg['Servers'][$i]['history'] = 'pma_history'; $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
Elas correspondem aos nomes das tabelas dentro do banco de dados, mas não precisamos mudar seus valores porque usamos exatamente estes.
Salve o arquivo.
Nota: Da mesma forma que o phpMyAdmin suporta múltiplos servidores de bancos de dados, você poderá duplicar essas linhas e colocá-las abaixo da configuração de outro servidor para que este outro servidor tenha essas funcionalidades extendidas também.
Pronto! Agora o phpMyAdmin já pode utilizar todas as novas funcionalidades. Bom proveito! Agora quando você for usar o phpMyAdmin, poderá ver opções adicionais como a Aba Designer, Procurar Por Exemplos, Fazer comentários sobre os bancos de dados e tabelas em Operações, gerar PDF dos resultados de comandos SQL, entre outros.
5. Outros tipos de Autenticação
Além do método cookie, o mais recomendado por ser seguro e flexível, podemos usar outros tipos de autenticação também. Descrevo aqui alguns mais relevantes:
- Modo HTTP: O usuário ao invés de ter uma página de login, recebe uma caixa de diálogo do próprio navegador perguntando o usuário e a senha. Caso os dados estejam corretos, o phpMyAdmin já vai para sua tela principal de operação. O modo HTTP é o mesmo usado nas autenticações HTTP via o arquivo htaccess.
- Modo config: Não é pedido nenhuma senha para o usuário via navegador. O usuário e senha do banco de dados está configurado no arquivo config.inc.php. Use isto se você quer autenticar de outra forma, como utilizando o arquivo especial do Apache htaccess. Eu não recomendo muito.