Uma vez instalado o phpMyAdmin, como descrito em um artigo anterior, é hora de aprender a mexer no programa como um todo. Por ser uma ferramenta bastante completa, este tutorial vai satisfazer dois nichos: os que não sabem nada de MySQL e vão aprender a mexê-lo com o phpMyAdmin; e os que já sabem MySQL e vão aprender a usar a ferramenta.
1. Introdução – Usuários phpMyAdmin ou usuários MySQL?
Antes de mais nada, precisamos saber de um conceito muito importante para quem está começando a usar o phpMyAdmin: usuários. Muita gente se confunde nesta parte, porque na maioria das ferramentas web, você tem um usuário para se logar na ferramenta, que então vai gerenciar algo. No caso do phpMyAdmin, após a instalação não é necessário criar usuários na ferramenta. Isto acontece porque o phpMyAdmin se autentica diretamente no MySQL, utilizando os usuários do próprio banco de dados!
Em outras palavras, quando falamos em usuários do phpMyAdmin, estamos falando de usuários do MySQL também: é a mesma coisa.
Sabendo disso, a primeira coisa que devemos saber é: qual o usuário do MySQL que utilizaremos? Bem, neste tutorial, vou utilizar o usuário root do MySQL, pois vou usar a ferramenta para demonstrar como manusear os usuários do MySQL via phpMyAdmin.
1.1. Verificando a senha de root do MySQL via linha de comando
Se você acabou de instalar o MySQL, tanto no Linux, quanto no Windows, provavelmente você já saiba a senha de root (ou então ela esteja vazia). Se você já sabe e tem certeza da senha, pode pular à vontade este item.
Para verificar a senha via linha de comando:
$ mysql -u root -p Enter password: (digite a senha) Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 224 Server version: 5.0.51a-15-log (Debian) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
Se o prompt do mysql apareceu, então a senha está correta e iremos usar ela. Se ao invés disso aparecer:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Isso quer dizer que a senha está errada. Muitas das vezes a senha do MySQL está vazia depois da instalação, para verificar, retire o parâmetro -p (de password) e veja se cai no prompt MySQL:
$ mysql -u root [...] mysql>
Caso isto aconteça, recomendo configurar a senha de root com o seguinte comando:
$ mysqladmin -u root password 'novasenha'
Substituindo novasenha pela senha desejada.
1.2. Logando-se no phpMyAdmin
Tendo em mãos a senha do root ou qualquer outro usuário do MySQL, acesse a página de login do phpMyAdmin. Aqui, a página estará sempre em:
http://localhost/phpmyadmin/
Dependendo do tipo de autenticação que você usou, o navegador vai te pedir um usuário e senha ou você vai cair numa página de login do próprio phpMyAdmin. No nosso caso, fomos presenteados pela página de login:
Estarei usando aqui o phpMyAdmin em português do Brasil.
Se o login for correto, esta será a tela principal do phpMyAdmin:
2. Acessando os usuários do banco de dados
Já logado no phpMyAdmin, os usuários do banco de dados podem ser encontrados acessando a aba “Privilégios” (Privileges), que fica entre as abas na parte superior direita da ferramenta. Ao fazer isto, uma listagem dos privilégios de cada usuário vai aparecer na tela, como este exemplo:
A ferramenta mostra os privilégios de cada usuário e ela faz desta forma porque no MySQL, se um usuário não tem privilégio algum, ele simplesmente não existe. Em outras palavras, não existem usuários propriamente ditos do MySQL, existem apenas métodos de acesso e permissões para este método.
Mas para não complicar muito a nossa cabeça, vamos considerar como usuários mesmo.
Note através do screenshot os campos de cada usuário:
- Usuário (User): é o nome do usuário propiamente dito. Por exemplo: root, eitch, kioshi. Podem existir duplicatas desses nomes e nesse caso o que vai diferenciar pode ser o próximo campo. Quando este campo está como “Qualquer”, isso quer dizer o servidor de banco de dados pode ser acessado sem usuário. (comando: mysql -u ‘ ‘)
- Servidor (Host): de onde o usuário vem. Aqui colocamos de qual IP ou hostname certo usuário pode acessar. Você pode restringir o usuário root, por exemplo, para ser acessado apenas da máquina local (localhost), enquanto o usuário eitch pode ser acessado apenas de 192.168.0.1. O caracter % significa de qualquer lugar.
- Senha (Password): mais simples impossível: se o usuário tem uma senha configurada ou não.
- Privilégios Globais (Global Privileges): o que o usuário pode fazer em todo o servidor de banco de dados. Cada um desses privilégios é expresso na sintaxe SQL, que é inglês. Por exemplo: SELECT é consultar dados de um banco, UPDATE é atualizar os dados, DELETE é remover e por aí vai.
- Conceder/Grant (Grant): Se sim, o usuário pode conceder privilégios à outros usuários. Geralmente utilizado por “super-usuários”, ou seja, os roots de um banco de dados.
Conhecendo os campos, vamos considerar então as informações principais:
- Os usuários sempre serão expressos como: usuario@host (campos Usuário e Servidor).
- Existem privilégios globais e específicos. Nos globais, o usuário pode fazer tudo em todo servidor MySQL. Nos locais, o usuário poderá fazer ações apenas em bancos de dados específicos ou tabelas.
3. Criando e editando usuários
Para entender melhor o esquema de privilégios, vamos criar aqui o usuário devin. Na aba Privilégios (Privileges), logo abaixo da tabela com a lista de usuários, clique em Adicionar novo usuário (Add new user).
Preencha os campos conforme as instruções dadas anteriormente, marque a opção “Criar Banco de Dados como mesmo nome e conceder todos os privilégios” (Create database with same name and grant all privileges), para que a ferramenta já crie um banco de dados vazio pra gente ficar testando depois. Em seguida, clique em Executar lá embaixo da página.
Uma das coisas mais legais do phpMyAdmin é que ele diz exatamente o que está fazendo, em termos de comandos SQL. Por que isso é bom? Oras, utilizando uma interface gráfica as coisas ficam mais fáceis, mas um bom administrador de banco de dados tem que saber o que acontece lá dentro. O phpMyAdmin, a cada ação que faz, mostra ao usuário exatamente os comandos que ele executou:
Ou seja, se você quiser fazer a mesma operação via linha de comando (prompt mysql), é só reproduzir estes comandos!
Com o usuário criado, caímos na tela de edição do usuário. Se voltarmos na página com a lista de usuários, esta tela de edição de usuário pode ser acessada clicando no ícone do “lápis” no canto direito de cada usuário.
Nesta tela de edição, podemos mudar: privilégios globais do usuário; privilégios específicos em bancos de dados; senha; e informações de login.
Lembra que criamos um banco de dados com o mesmo nome do usuário (devin)? Pois é, é interessante a gente ver que na parte para mudar os privilégios específicos em bancos de dados, podemos ver as permissões do usuário devin no banco de dados devin:
Veja que temos permissões para fazer tudo no banco de dados. Se clicarmos no “lápis” do campo Ação nesta tabela, poderemos também editar essas permissões:
Desta forma, podemos controlar o que o usuário pode fazer em cada um dos bancos de dados do servidor. Com a interface gráfica do phpMyAdmin, fica muito mais fácil visualizar essas informações de privilégios.
3.1. Exercício: Alterando os privilégios do usuário
Para fixar mais essa idéia, vamos fazer um pequeno exercício. Nosso objetivo será restringir o usuário devin para só poder consultar o banco de dados, nada mais que isso. Vamos considerar aqui que criamos o usuário devin exatamente como descrito neste tutorial, ou seja, ele tem todas as permissões para o banco de dados devin.
Temos três tarefas:
- Adicionar alguns dados de teste no banco de dados devin;
- Alterar os privilégios do usuário devin;
- Testar, via phpMyAdmin, o que o usuário devin pode fazer.
Primeiro vamos adicionar os dados, mas vamos fazer isso como usuário devin. Deslogue-se do usuário root no phpMyAdmin clicando no segundo botão do menu esquerdo (verde, “Exit“). Logue-se agora com o usuário recém-criado.
Note que agora, logado como um usuário “normal”, algumas coisas que o root possuía não existem mais:
- Os bancos de dados disponíveis para seleção diminuíram. Isto ocorre porque o usuário não tem permissão para acessar esses outros bancos (nenhum privilégio global por exemplo).
- Algumas abas não estão mais disponíveis, como por exemplo a aba de Privilégios.
- Este usuário comum também não pode criar novos bancos de dados.
Continuando, clique no banco de dados devin do menu esquerdo para selecioná-lo. Em seguida, clique na aba SQL e coloque o seguinte conteúdo:
CREATE TABLE teste ( id int(3) unsigned zerofill, campo1 varchar(50), texto text, PRIMARY KEY(id) );
Depois clique em Executar. Não querendo entrar em detalhes (esse é um assunto para um outro tutorial), este comando SQL criou uma tabela chamada teste com 3 campos: id, campo1 e texto.
Agora, perceba que no menu esquerdo, logo abaixo do nome do banco de dados devin, aparecerá uma nova tabela, a que acabamos de criar (teste). Clique nela para abrir a página da tabela e depois clique na aba Inserir (Insert):
Preencha os campos conforme o exemplo da imagem e clique em Executar. Isto colocará dados dentro da tabela teste. Repita o processo quantas vezes quiser para colocar vários outros dados. Neste exemplo coloquei três linhas de dados.
Clique na aba Visualizar (Browse) e veja que os dados foram criados com sucesso:
Você pode clicar e mudar os dados que criou, pode alterar a tabela, pode criar outras tabelas. Em geral, pode fazer tudo dentro deste banco de dados (e vamos fazer muitas coisas em um outro tutorial).
Agora deslogue-se do usuário devin e logue-se como root novamente. Vá na aba de Privilégios (Privileges) e edite o usuário devin@localhost. Em seguida, localize as permissões específicas para o banco de dados devin e clique no ícone de editar:
Agora desmarque todas as opções de privilégios, menos a de SELECT:
Clique em Executar e pronto. Agora deslogue-se do root e logue-se novamente como usuário devin. Tente fazer os mesmos procedimentos do começo do exercício, como por exemplo: criar tabelas, removê-las, editá-las, adicionar dados… Nada será possível! A única coisa que você poderá fazer é visualizar os dados através da aba “Visualizar” (Browse).
Experimente logar-se novamente como root e ficar mudando e testando os privilégios deste usuário devin.
4. Removendo usuários
Depois de muito experimentar com os privilégios dos usuários, chegou a hora de removê-los (se quiser, é claro). Para remover é bem simples, vá à aba de “Privilégios” (Privileges), marque os usuários que você quer remover e clique em “Remover os usuários selecionados” (Remove selected users).
Cuidado, ao clicar em Executar, nenhuma confirmação irá aparecer, então tenha certeza do que está fazendo, senão terá que criar novamente o usuário caso apague sem querer :(
5. Descrições dos Privilégios
Para finalizar, deixo aqui uma descrição dos privilégios que os usuários podem ter em cada contexto (tabelas, bancos de dados, administração geral do servidor). Não são todos os privilégios disponíveis, mas sim os principais para um bom entendimento inicial.
- CREATE – Permite criar tabelas ou bancos de dados;
- DROP – Permite remover tabelas ou bancos de dados, juntamente com todo seu conteúdo;
- GRANT – Permite adicionar novos privilégios à outros usuários;
- ALTER – Permite alterar a estrutura de tabelas de um banco de dados;
- DELETE – Permite remover dados dentro de tabelas;
- INDEX – Permite criar índices de tabelas dentro de bancos de dados;
- INSERT – Permite inserir dados dentro de tabelas de um banco de dados;
- SELECT – Permite visualizar e fazer consulta aos dados de um banco de dados;
- UPDATE – Permite modificar os dados já existes (mudança de valores) dentro de tabelas de um banco de dados;
- LOCK TABLES (admin) – Permite “trancar” as tabelas, para que não haja mais atualizações nos dados. Utilizado principalmente para fazer backups dos dados (via mysqldump por exemplo);
- CREATE USER (admin) – Permite criar usuários;
- PROCESS (admin) – Permite mostrar as consultas e os dados de monitoramento do servidor de banco de dados;
- RELOAD (admin) – Permite recarregar as configurações do servidor de banco de dados;
- SHUTDOWN (admin) – Permite desligar o servidor de banco de dados;
- SUPER (admin) – Permite o usuário ser um super-usuário, que pode fazer tudo sem excessões.
Em outro tutorial, aprenderemos como criar, modificar e manipular dados de tabelas, via phpMyAdmin. De quebra, podemos quem sabe até aprender mais sobre o próprio MySQL ;)