Português do Brasil English
Devin no Facebook  Devin no Twitter  RSS do Site 
Programas    

Gerenciando MySQL com o phpMyAdmin: Usuários


Comentários  36
Visualizações  
278.918

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:

Login do phpMyAdmin

Login do phpMyAdmin

Estarei usando aqui o phpMyAdmin em português do Brasil.

Se o login for correto, esta será a tela principal do phpMyAdmin:

Tela principal do phpMyAdmin

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:

Lista de usuários do MySQL

Lista de usuários do MySQL

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

Adicionar novo usuário MySQL

Adicionar novo usuário MySQL

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:

Sintaxe SQL para adicionar novo usuário

Sintaxe SQL para adicionar novo usuário

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:

Privilégios específicos de bancos de dados

Privilégios específicos de bancos de dados

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:

Privilégios específicos de bancos de dados

Privilégios específicos de bancos de dados

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:

  1. Adicionar alguns dados de teste no banco de dados devin;
  2. Alterar os privilégios do usuário devin;
  3. 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.

Diferenças do phpMyAdmin para um usuário comum

Diferenças do phpMyAdmin para um usuário comum

Note que agora, logado como um usuário “normal”, algumas coisas que o root possuía não existem mais:

  1. 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).
  2. Algumas abas não estão mais disponíveis, como por exemplo a aba de Privilégios.
  3. 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):

Inserção de dados em uma tabela

Inserção de dados em uma tabela

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:

Visualização de dados de uma tabela

Visualização de dados de uma tabela

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:

Editar privilégios de um usuário

Editar privilégios de um usuário

Agora desmarque todas as opções de privilégios, menos a de SELECT:

Editando privilégios específicos de um usuário

Editando privilégios específicos de um usuário

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 ;)

278.918

Comentários  36
Visualizações  
278.918


TagsLeia também

Apaixonado por Linux e administração de sistemas. Viciado em Internet, servidores, e em passar conhecimento. Idealizador do Devin, tem como meta aprender e ensinar muito Linux, o que ele vem fazendo desde 1997 :-)


Leia também



Comentários

36 respostas para “Gerenciando MySQL com o phpMyAdmin: Usuários”

  1. William disse:

    Parabéns pelo tutorial Hugo. Estou iniciando meus estudos nesta área como auto-didata e sua aula foi muito bem explicada e de fácil entendimento. Já incluí nos favoritos e de vez em quando vou passar por aqui. :D

  2. Obrigado William! Ainda haverá mais partes dessa série de tutoriais sobre o phpMyAdmin e consequentemente o MySQL!

  3. raul disse:

    bom o meu phpmyadmin não foi instalado so usei o easyphp

  4. @raul:

    O processo de instalação e configuração adicional do phpmyadmin pode ser encontrado em outro artigo deste site:

    Gerenciando MySQL com o phpMyAdmin: Instalação

  5. William disse:

    Parabéns pelo tutorial. Ótimo para iniciantes. Fiquei com uma dúvida a respeito deste erro:

    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    Quando ele acontece no site de hospedagem como posso resolver já que os comandos orientados aqui acredito que não funcionam? Eu estou estudando um acesso restrito que de uma hora pra outra resolveu dar esta mensagem. Isso aconteceu depois que eu reparei um erro de segurança que permitia que o visitante digitasse o caminho na barra de endereços do navegador e abria a página mesmo sem digitar login/senha. Quando fui tentar corrigir, devo ter feito algo errado que danificou tudo e passou a mostrar este erro.

    Curioso que eu não fiz nenhuma alteração no banco ou em qualquer linha ligada à senha de mysql. Ao menos não em sã consciência.

  6. Gildo Mendes disse:

    Gostei desse tuturial, pois estou começando um trabalho de coclusão de curso, e meu objetivo e fazer um artigo sobre a como acessar um bd mysql pelo palm, e meu objetivo é usar o PHPAdmim e com esse turorial ja deu para ver que não é muito complicado, pois tambem é a primeira vez que vou usar essa ferramenta. Se tiver algumas dicas agradeço desde já!

  7. DANIEL GOMES (PB - C disse:

    MUITO LEGAL ESTE TUTORIAL PARABENS FOI MUITO PROVEITOSO…

  8. Estou tendo um problema no meu phpmyadmin, independente do usuario que eu uso para me logar ele mostra a tabela: information_schema, gostaria de saber como faço para que ela não seja exibida para todos os usuario….

    muito obrigado.

  9. @Cristano:

    Esta tabela é padrão do MySQL: ela contém apenas meta-dados com informações sobre os bancos de dados do servidor. Por isso, não há mal nenhum em ela aparecer. Também é interessante notar que esta tabela é somente-leitura, então nenhum usuário pode fazer qualquer alteração.

  10. Não há nenhum risco de segurança, os usuarios poderão verficar qual o nome dos demais usuario e tal.. isso não é um problema?

  11. @Cristiano:

    Não, a tabela contém os meta-dados sobre as estruturas dos bancos de dados. Os usuários e suas permissões ficam no banco de dados "mysql". De qualquer maneira, se você quiser eliminar a vista desse banco de dados no phpmyadmin, basta adicionar a seguinte linha:

    $cfg['Servers'][$i]['hide_db'] = 'information_schema';

    No config.inc.php do phpmyadmin. O 'S' do Servers é em maiúsculo.

  12. Ok, funcionou… muitíssimo obrigado.

  13. Olá Pessoal, minha duvida agora não tem a ver com o phpmyadmin… mas quem sabe possam me auxiliar.

    Seguinte:

    Tenho varios bancos mysql, e todo dia os usuarios criam novos bancos, hoje eu faço um mysqldump –all-databases, o que queria era criar um backup para cada banco, como nunca vou saber certo quais são os nomes do bancos, tenho que criar um script que reconheça os nomes dos bancos e crie um backup de cada um, o problema é exatamente este: não sei fazer esse script.. alguem pode me ajudar?

  14. Marcos disse:

    Muito bem explicado! Meus Parabéns! Você conseguiu sanar muitas dúvidas minhas! Muito Obrigado!

  15. kleber disse:

    Realmente muito bom, parabéns!

  16. Wilson Dias disse:

    Prezados amigos, eu estou começando a trabalhar em JOOMLA! e instalei o WAMP Server, quando cliquei em LocalHost ou PHPMyAdmin, apareceu a seguinte mensagem: "You don't have permission to access /phpmyadmin/ on this server." Com isso fiquei parado, alguém poderia me ajudar a resolver esse problema?

    Desde já muito obrigado pelo apoio

  17. Luiz disse:

    Parabéns,

    O tutorial foi de grande ajuda para eu compreender melhor o sistema.

    Abs

  18. Paulo disse:

    Preciso de saber como programar acesso a bases de dados MySql em java, usando o easyphp. Pode-me ajudar?

  19. Daniel disse:

    oi, eu estou usando o phpmyadmin 3.4.3.2 , só que logo como root eu consigo ver todos os bancos e quando entro com um outro usuario que tem acesso limitado, também consigo ver todos os bancos. Como faço pra apenas usuario "x" ver bancos "a,b e c" ?

    Se puder ajudar, obrigado!

  20. daiane disse:

    Criei a minha primeira tebela no phpmyadmin e deu o erro 1036 (read only) gostaria de saber o procedimento exato de como devo fazer..

    Obrigada

  21. Alexandre disse:

    Boa tarde!

    Estou administrando um forum phpbb em uma rede internet, porém não sei o usuário que possui privilégios no banco de dados,.

    Entro com o usuário root no phpmyadmin e não consigo visualizar as tabelas, a pessoa que administrava o banco do fórum saiu da empresa.

    Saberiam me informar como posso entrar no banco de dados do phpmyadmin para fazer um backup das tabelas que lá existem?

    Abs…

  22. diego disse:

    Boa noite!!! Gostaria de aprender mysql no phpmyadmin quem pode me ajudar???

  23. Francisco disse:

    Olá Hugo.

    Você pode me dizer qual é o arquivo do php que salva a senha e o usuário?

    Porque eu quero editar o usuário e senha abrindo o código fonte do phpmyadmin.

    Obrigado.

  24. Carlos Alan disse:

    Como fazer com que um usuário veja apenas o banco de dados dele e não todos os outros.

  25. Guilherme disse:

    Ao criar um usuário e ele logar pelo phpmyadmin ele possui a aba "status" onde são exibidos os detalhes do servidor. Como eu posso criar um usuário que não tenha acesso a esses dados?

  26. leonardo disse:

    belo tpico, estou iniciando em php agorae me deparei com o seguinte erro

    MySQL Error Message: Access denied for user 'forgottenserver'@'localhost' (using password: NO)

    como posso resolve-lo?

    mto obrigado

  27. Carlos disse:

    Bom dia Hugo, Sou iniciante e ficarei muito grato pela ajuda, se possível. Estou montando um banco de dados no Lazarus com XAMPP Control Panel v3.2.1 e localhost/phpmyadmin, quando introduzi em um form o componente TZConnection. Preenchi as propriedades: Database: Empresa, HostName: Localhost, User: Root, Protocol: mysql-5, Name: conexao e Password: "não tenho". Quando selecionei, em Connected a propriedade true, veio a mensagem: SQL Error: Access denied for user “@’localhost’ to database ‘empresa’. O que fazer para dar continuidade ao meu projeto ?
    Muito obrigado pela força.
    Carlos

  28. rodrigogibin disse:

    Hugo,

    Faz uma semana que estou tentando instalar e não consigo, ou melhor, consigo, mas não tenho acesso pelo phpmyadmin somente pelo terminal.

    Eu consigo logar usando mysql -u root -p, porém usando root e a mesma senha na interface web da o erro: Cannot log in to the MySQL server

    Detalhe, minha distro é o Fedora 21 e meu banco é o Mariabd isso pode ser a causa do problema??

    Abs

  29. bruno lopes disse:

    bom dia.

    Em um BD oracle de um sistema criei dois usuários e vou chamar aqui de usu_01 e usu_02, o usu_01 tem acesso a tabela estoque a qual tem o campo cd_estoque, o usu_02 não tem acesso aos cd_estoques, preciso fazer um insert para que o usu_02 tenha acesso aos cd_estoques que o usu_01 tem acesso.

  30. anderson disse:

    Ótimo tutorial, mais gostaria de saber a senha salva de um usuário que esta no meu banco de dados?

  31. Lenon PC disse:

    Olá, preciso muito de ajuda, tenho um servidor de tibia. E um hacker invadiu o data base do phpmyadmin e deletou todas as informações do banco de dados. Tem como descobrir o ip dele?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *