Resumo : Neste tutorial, você aprenderá como usar SHOW GRANTS
a instrução MySQL para visualizar os privilégios concedidos anteriormente a um usuário ou função.
Introdução à instrução MySQL SHOW GRANTS
A instrução MySQL SHOW GRANTS
retorna todos os privilégios e funções concedidos a um usuário ou função da conta.
Aqui está a sintaxe básica da SHOW GRANTS
instrução:
SHOW GRANTS
[FOR {user | role}
[USING role [, role] ...]]
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
- Primeiro, especifique o nome da conta de usuário ou função para a qual deseja exibir os privilégios concedidos anteriormente após a
FOR
palavra-chave. Se você omitir aFOR
cláusula, aSHOW GRANTS
instrução retornará os privilégios do usuário atual. - Segundo, use a
USING
cláusula para inspecionar os privilégios associados às funções do usuário. As funções especificadas naUSING
cláusula devem ter sido concedidas previamente ao usuário.
Para executar a SHOW GRANTS
instrução, você precisa ter SELECT
privilégios no mysql
banco de dados do sistema, exceto quando mostra privilégios e funções para o usuário atual.
Exemplos de instruções MySQL SHOW GRANTS
Vejamos alguns exemplos de uso da SHOW GRANTS
instrução MySQL.
1) Usando a instrução SHOW GRANTS para exibir os privilégios do usuário atual
A instrução a seguir usa a SHOW GRANTS
instrução para exibir os privilégios concedidos ao usuário atual:
SHOW GRANTS;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Se você usar a ferramenta mysql, a saída poderá não ser legível. Para corrigir isso, você pode exibir a saída no layout vertical:
SHOW GRANTS\G
É equivalente à seguinte afirmação:
SHOW GRANTS FOR CURRENT_USER\G
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
e
SHOW GRANTS FOR CURRENT_USER()\G
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Observe que ambas CURRENT_USER
as CURRENT_USER()
funções e retornam o usuário conectado no momento.
2) Usando a instrução SHOW GRANTS para exibir os privilégios concedidos a um usuário
Primeiro, crie um novo banco de dados chamado vehicles
:
CREATE DATABASE vehicles;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Segundo, selecione o banco de dados vehicles
:
USE vehicles;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, crie uma nova tabela chamada cars
no vehicles
banco de dados:
CREATE TABLE cars (
id INT AUTO_INCREMENT,
make VARCHAR(100) NOT NULL,
model VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Quarto, crie um novo usuário chamado musk@localhost
:
CREATE USER musk@localhost
IDENTIFIED BY 'Super1Pass!';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Quinto, mostre os privilégios padrão concedidos ao usuário musk@localhost
:
SHOW GRANTS
FOR musk@localhost;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O GRANT USAGE
é sinônimo de nenhum privilégio. Por padrão, quando um novo usuário é criado, ele não possui privilégios.
Sexto, conceda todos os privilégios no vehicles
banco de dados ao usuário musk@localhost
:
GRANT ALL
ON vehicles.*
TO musk@localhost;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Por fim, mostre os privilégios concedidos ao usuário musk@localhost
:
SHOW GRANTS
FOR musk@localhost;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
3) Usando a instrução SHOW GRANTS para exibir os privilégios concedidos para uma função
Primeiro, crie uma nova função chamada writer@localhost
:
CREATE ROLE writer@localhost;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Segundo, mostre os privilégios concedidos para a função writer@localhost
:
SHOW GRANTS
FOR writer@localhost;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, conceda privilégios SELECT
, INSERT
, UPDATE
e DELETE
no vehicles
banco de dados para writer@localhost
:
GRANT
SELECT,
INSERT,
UPDATE,
DELETE
ON vehicles.*
TO writer@localhost;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Quarto, mostre os privilégios concedidos para a função writer@localhost
:
SHOW GRANTS
FOR writer@localhost;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
4) Usando SHOW GRANTS com exemplo de cláusula USING
Primeiro, crie uma nova conta de usuário chamada jame@localhost
:
CREATE USER jame@localhost
IDENTIFIED BY 'Secret@Pass1';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Segundo, conceda o EXECUTE
privilégio ao usuário jame@localhost
:
GRANT EXECUTE
ON vehicles.*
TO jame@localhost;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, conceda a função writer@localhost
ao usuário jame@localhost
:
GRANT writer@localhost
TO jame@localhost;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Quarto, exiba os privilégios concedidos ao usuário jame@localhost
:
SHOW GRANTS
FOR jame@localhost;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Por fim, use a USING
cláusula na SHOW GRANTS
instrução para exibir os privilégios associados à writer@localhost
função:
SHOW GRANTS
FOR jame@localhost
USING writer@localhost;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Resumo
- Use a
SHOW GRANTS
instrução MySQL para exibir privilégios concedidos a um usuário ou função.