www.samueldiasneto.com: Tutorial MySQL

<<< Voltar Avançar >>>

5. Criando usuários e concedendo privilégios

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:

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.

<<< Voltar Avançar >>>