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 linuxhintcom 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 resolvedorcriar 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 379A 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.