Pular para o conteúdo principal

Como dar privilegios a um usuário sobre apenas um determinado Banco de Dados no MySQL

Neste tutorial será mostrado como criar um usuário em um servidor MySql e dar permissão para que ele tenha acesso apenas a um determinado banco de dados.
Primeiro criaremos um banco como exemplo para dar acesso a um usuário.
Para logar no mysql-server com a conta de root usando o mysql-client digite no terminal:
# mysql -h [hostname] -u root -p

O parâmetro -h é usado para especificar o host em que está instalado o mysql server. [hostname] deve ser substituído pelo IP ou o endereço da máquina aonde está o banco. Caso você esteja na máquina aonde ele está instalado essa opção não precisa ser colocada.
Após digitar o comando aperte [Enter] e ele pedirá a senha de root do mysql, digite a senha e você estará logado no servidor.
Para criar o banco de dados que será usado como teste use o seguinte comando:
create database teste;

Iremos criar uma tabela para deixar como teste, para é primeiro necessário selecionar o banco que será usado e depois criar a tabela, para isso digite:
use teste;
create table tableteste
(
id int unsigned not null auto_increment primary key,
nome varchar(20),
telefone varchar(20)
);

Tendo criado o banco e a tabela podemos passar aos privilégios. Para dar privilégios a um usuário no mysql usamos o comando grant ou revoque para tirar.
Vamos criar um usuário chamado “teste” e dar todos os privilégios a ele somente sobre o banco “teste”. Para isso é utilizado o seguinte comando:
grant all privileges on teste.* to teste identified by '123456';

O comando acima dá todos os privilégios no banco de dados teste para um usuário chamado teste. O parâmetro identified especifica a senha desse novo usuário. O “teste.*” está dizendo que os privilégios serão dados sobre o banco “teste” em todas as tabelas, o “*” está sendo usado como um coringa que pode representar qualquer coisa.
Também poderia ser acrestado ao final dessa linha os comandos:
with grant option;

Isso daria ao usuário “teste” o direito de dar os mesmos privilégios que ele possui a outros usuários. O comando completo ficaria assim:
grant all privileges on teste.* to teste identified by '123456' with grant option;

Se tudo correr bem o mysql retornará a seguinte mensagem (ou algo pareceido):
Query OK, 0 rows affected (0.04 sec)

Agora para testar faça logoff do usuário root usando o comando “quit” e entre novamente usando o usuário “teste”. Para isso digite:
mysql -h [hostname] -u teste -p

Quando pedir a senha digite “123456” (sem as aspas). Digite o comando “show databases” para mostrar os bancos de dados a que você tem acesso. Você verá que só irá aparecer o banco teste e outro banco com informações do sistema. Daí você pode fazer outros testes criando novas tabelas e inserindo linhas nas tabelas para perceber que o usuário “teste” tem total liberdade apenas com o banco “teste”.

Essa é apenas um pequena amostra do que pode ser trabalhado com privilégios no MySQL. Em outros tutoriais abordarei mais sobre o assunto.

Comentários

Postagens mais visitadas deste blog

Virtualizando Mikrotik Com VirtualBox

Este texto mostra um passo-a-passo para instalar o mikrotik em uma máquina virtual do VirtualBox, seja somente para testes ou para montar realmente um servidor para a rede. Antes de iniciarmos nossa aventura é interessante visitar o site do Mikrotik e baixar uma imagem ISO que é disponibilizada no site com uma licensa full durante 24h. Iremos utilizá-la para instalar o Mikrotik. Para tanto, vá até a página de download do Mikrotik (http://www.mikrotik.com/download.html), em “select system type” escolha a opção “Other X86 platform” e em “Select Software Type” escolha "stable". Depois basta clicar em “ISO image” e baixar o arquivo. 1 – Abra o Virtual Box e clique em “Novo” para que possamos criar uma nova máquina Virtual onde será instalado o mikrotik.     2 – Irá aparecer uma tela de boas vindas, basta clicar em próximo para ir à próxima fase:     3 – Na próxima tela é dada a opção de escolher o nome da máquina virtual, o S.O. e sua respectiva versão. No campo "nome&

Traits. Novo mecanismo para reuso de código inserido no PHP 5.4.

Traits é um mecanismo para o reuso de código em linguagens que não trabalham com herança multipla, como o PHP. Foram criadas para reduzir alguma limitações da "herança simples" possibilitando o desenvolvedor a reusar conjuntos de métodos livremente em suas classes independentemente da hirarquia a qual ela pertence. Uma Trait é similar a uma classe, mas possui apenas um grupo métodos e propriedades que serão usados pelas nossas classes. Não é possível instanciar uma Trait diretamente. ela é uma adição a herança tradicional e possibilita a "composição horizontal de comportamento", que é a aplicação de membros a uma classe sem o uso de herança. Vamos a um exemplo de uso: <? php trait HelloWorld {     public function sayHello() {         echo 'Hello World!';     } } class TheWorldIsNotEnough {     use HelloWorld; // Aqui estou dizendo que minha classe usará os métodos da Trait HelloWorld } $o = new TheWorldIsNotEnough(); $o->sayHello(); ?

Gerando Planilha xls com o PHP

Neste post falo sobre este recurso que pode ser bastante útil dentro de um ambiente corporativo, onde é necessário estar gerando determinados relatários. Bem, ontem tive um probleminha, me vi diante da necessidade de gerar uma planilha do excel e não fazia idéia de como poderia fazer isso. Depois de muito estudar e pesquisar percebi que, apesar de ser algo bem simples de implementar, muita gente tem dificuldade em aprender e muitos posts que encontrei por aí simplesmente não funciona. Existem algumas formas de gerar uma planilha usando PHP. Se você procurar na internet irá encontrar várias classes já prontinhas com várias funções para auxiliar na geração da planilha. O método que vou abordar aqui é o método mais simples, vamo criar tudo na "munheca". Por incrível que parecer o código é bastante simples, veja: <?php //primeiro precisamos acrescentar alguns cabeçalhos para que o arquivo que iremos exportar um arquivo xls header("Content-type: application/vnd.ms-