SQL Server GRANT

Sql Server Grant



Neste artigo, você entenderá como usar a instrução GRANT no SQL Server para conceder permissões em um protegível a um principal.

SQL Server Protegível e Principal

Um protegível refere-se aos recursos que o sistema de autorização do SQL Server Database Engine controla o acesso. Um exemplo seria uma tabela de banco de dados.

Um principal refere-se a qualquer entidade que requer acesso a qualquer recurso do SQL Server. Por exemplo, um usuário solicitando permissões em uma tabela é um principal.







Declaração de concessão do SQL Server

Veja a seguir a sintaxe do comando GRANT no SQL Server:



GRANT permissões
ON protegível TO principal;

Você precisa especificar a permissão que deseja atribuir ao principal como uma lista separada por vírgulas.



A palavra-chave ON permite especificar o protegível no qual as permissões são aplicadas. Por fim, a palavra-chave TO permite definir o principal de destino.





Por exemplo, criar um usuário usando a instrução CREATE USER não define as permissões para esse usuário. Portanto, é essencial usar a instrução GRANT para definir as permissões desse usuário.

Tomemos um exemplo.



Criar login de exemplo

Vamos começar criando um login de amostra para fins de ilustração. A query segue abaixo:

criar login linuxhint
com senha='senha';

O comando acima deve criar um usuário com o nome de usuário linuxhint e a senha especificada.

Criar banco de dados de amostra

Podemos criar um banco de dados onde o usuário residirá uma vez que tenhamos definido um login. As consultas são as mostradas:

descartar banco de dados se existir resolvedor;

criar resolvedor de banco de dados;

usar resolvedor;

descartar tabela se existir entradas;

criar entradas de tabela (
id int não null identity(1,
1) chave primária,
nome_do_servidor varchar(50),
server_address varchar(255) não nulo,
Compression_method varchar(100) padrão 'nenhum',
size_on_disk flutuante não nulo,
flutuador tamanho_comprimido,
total_records int não nulo,
data de início_data
);
inserir
em
ENTRIES(nome_do_servidor,
endereço do servidor,
método de compressão,
tamanho no disco,
size_compressed,
totais_registros,
data_inicial)
valores
('MySQL','localhost:3306','lz77',90.66,40.04,560000,'2022-01-02'),
('Redis','localhost:6307','Snappy',3.55,998.2,100000,'2022-03-19'),
('PostgreSQL','localhost:5432','pglz',101.2,98.01,340000 ,'2022-11-11'),
('Elasticsearch','localhost:9200','lz4',333.2,300.2,1200000,'2022-10-08'),
('MongoDB','localhost:27017','Snappy',4.55,4.10,620000,'2021-12-12'),
('Apache Cassandra','localhost:9042','zstd',300.3,200.12,10000000,'2020-03-21');

Crie um usuário para o login

Depois de criar o banco de dados e a tabela, podemos criar um usuário para o login do linuxhint como:

usar resolvedor
criar usuário linuxhint
para login linuxhint;

Faça login como o novo usuário

Em seguida, vamos fazer login como o usuário recém-criado. O comando é o mostrado:

setuser 'linuxhint';

Uma vez logado, podemos tentar visualizar as tabelas executando o comando select:

selecione * nas entradas;

A execução da consulta acima deve retornar um erro:

Msg 229, Nível 14, Estado 5, Linha 379
A permissão SELECT foi negada no objeto 'entries', banco de dados 'resolvedor', esquema 'dbo'.

Isso ocorre porque o usuário linuxhint não possui nenhuma permissão no banco de dados, incluindo as permissões SELECT.

Conceder permissão ao usuário

Precisamos conceder ao SELECT permissões para permitir que o usuário visualize as informações armazenadas nas tabelas.

Para isso, você precisa fazer o login com a conta administrativa do SQL Server.

Em seguida, execute a consulta como:

conceder select em entradas para linuxhint;

Uma vez executado, efetue login como usuário linuxhint e use a instrução SELECT.

selecione * nas entradas;

Nesse caso, o comando retorna a tabela, pois o usuário possui permissões SELECT

Você também pode atribuir outra permissão ao usuário, como inserir e excluir como:

conceder inserir, excluir em entradas para linuxhint;

neste caso, o usuário linuxhint deve ter as permissões SELECT, INSERT e DELETE na tabela de entradas.

Conclusão

Nesta postagem, exploramos o uso do comando GRANT no SQL Server. O comando permite que você atribua permissões a um determinado principal.