Tutorial MySQL: Criando usuários e concedendo privilégios | DeServ – Info
Lomadee, uma nova espcie na web. A maior plataforma de afiliados da Amrica Latina.

Tutorial MySQL: Criando usuários e concedendo privilégios

By Flávio Silva
O MySQL possui um sistema de privilégios que é semelhante ao sistema de permissões de arquivos. Os usuários do MySQL não precisam ter os mesmos nomes e senhas dos usuários do sistema. Por motivos de segurança é até melhor que sejam diferentes. Lembre-se que, sempre, um usuário ou processo deve ter o menor nível de permissões ou privilégios para executar suas tarefas. Se ele só precisa ler, dê a ele só permissão de leitura. Se ele precisa escrever naquela tabela, só dê privilégios de escrita naquela tabela, e assim por diante… Quanto menos privilégios o usuário tiver para executar sua tarefa, melhor para a segurança.
Para criar usuários e conceder privilégios você usa o comando GRANT. Sua sintaxe é:

GRANT privilégios [colunas]
ON item
TO usuário [IDENTIFIED BY senha]
[WITH GRANT OPTION]

Onde:

  • privilégios – pode ser uma ou mais das seguintes opções separadas por vígula:
    • SELECT – selecionar linhas (registros), aplicado a tabelas e colunas;
    • INSERT – inserir linhas, aplicado a tabelas e colunas;
    • UPDATE – alterar valores em linhas, aplicado a tabelas e colunas;
    • DELETE – apagar linhas, aplicado a tabelas;
    • INDEX – criar e excluir índices, aplicado a tabelas;
    • ALTER – alterar tabelas(adicionar colunas, renomear colunas ou tabelas, alterar tipos de dados de colunas), aplicado a tabelas;
    • CREATE – criar banco de dados ou tabela, aplicado a banco de dados e tabelas. Se o comando GRANT for especificado com um banco de dados ou tabela em particular, você só poderá criar esse banco ou tabela, o que significa que eles terão que ser excluídos primeiro (DROP);
    • DROP – apagar banco de dados ou tabela, aplicado a banco de dados e tabelas;
    • RELOAD – recarregar tabelas grant e revogar privilégios, hosts, logs e tabelas, deve ser concedido apenas a administradores;
    • SHUTDOWN – desligar o servidor MySQL, deve ser concedido apenas a administradores;
    • PROCESS – visualizar processos do servidor e eliminá-los, deve ser concedido apenas a administradores;
    • FILE – ler e transferir dados entre tabelas e arquivos, deve ser concedido apenas a administradores;
    • ALL – concede tudo, deve ser concedido apenas a administradores;
    • USAGE – nada, isto apenas cria um usuário e o permite efetuar o logon, mas não permite nada.
  • colunas – é opcional e especifica as colunas a que os privilégios se aplicam. Pode ser uma única coluna ou várias separadas por vírgula;
  • item – é o banco de dados ou tabela a que os privilégios se aplicam (observação: se você estiver usando um banco de dados em particular, apenas o nome da tabela será suficiente para item; a tabela será interpretada com sendo do banco de dados atual). Pode ser especificado como:
    • *.* – neste caso os privilégios aplicam-se a todos os bancos de dados;
    • * – idem se não estiver utilizando nenhum banco de dados em particular;
    • BANCO.* – neste caso os privilégios aplicam-se a todas as tabelas do banco;
    • BANCO.TABELA – neste caso os privilégios aplicam-se a uma determinada tabela. Você pode, ainda, especificar alguma(s) coluna(s) em particular inserindo esta(s) em colunas;
  • usuário – especifica um usuário do MySQL. Por motivos de segurança este usuário não deve ser o mesmo usuário do sistema. Este nome também pode ser um nome de host (computador da rede);
  • senha é a senha do usuário para acessar o servidor MySQL;
  • WITH GRANT OPTION. Se isto for especificado, o usuário pode conceder seus privilégios a outros.

Os privilégios são armazenados em quatro tabelas internas, no banco mysql, a saber:

mysql.user
mysql.db
mysql.tables_priv
mysql.columns_priv

Você pode editar estas tabelas diretamente para manipular os privilégios.

Para remover privilégios você usa o comando REVOKE. Sua sintaxe é:

REVOKE privilégios [colunas]
ON item
FROM usuário

Se você permitiu ao usuário a concessão de privilégios com WITH GRANT OPTION, pode revogar isto com:

REVOKE GRANT OPTION
ON item
FROM usuário

Exemplos:

mysql> grant all
    -> on CC.*
    -> to sam identified by '1234';
Query OK, 0 rows affected (0.15 sec)

mysql> revoke all
    -> on CC.*
    -> from sam
    -> ;
Query OK, 0 rows affected (0.03 sec)

mysql> grant select,insert,update,delete,index,alter,create,drop
    -> on CC.*
    -> to sam identified by '1234'
    -> ;
Query OK, 0 rows affected (0.00 sec)

mysql>

Agora vamos sair do MySQL (usando o comando quit) e entrar como o novo usuário sam para ver se tudo funcionou corretamente:

mysql> quit
Bye
aranha:/home/samuel# mysql -u sam -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.1.11-Debian_4-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+----------+
| Database |
+----------+
| CC       |
+----------+
1 row in set (0.00 sec)

mysql>

Observe que ao usuário sam só é mostrado o banco que ele tem permissão de manipular.

Autor: Samuel Dias Neto
Fonte: http://www.htmlstaff.org

Tags: , , ,

Deixe uma Resposta