Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ GaussDB(DWS)/ Perguntas frequentes/ Conta, senha e permissão/ Como visualizar as permissões da tabela de um usuário?
Atualizado em 2024-05-09 GMT+08:00

Como visualizar as permissões da tabela de um usuário?

Cenário 1: execute o comando information_schema.table_privileges para exibir as permissões de tabela de um usuário. Exemplo:

1
SELECT * FROM information_schema.table_privileges WHERE GRANTEE='user_name'; 

Tabela 1 Colunas table_privileges

Coluna

Tipos de dados

Descrição

grantor

sql_identifier

Concedente da permissão

grantee

sql_identifier

Beneficiário de permissão

table_catalog

sql_identifier

Banco de dados onde a tabela é

table_schema

sql_identifier

Esquema em que a tabela está

table_name

sql_identifier

Nome da tabela

privilege_type

character_data

Tipo da permissão concedida. O valor pode ser SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, ANALYZE, VACUUM, ALTER, DROP ou TRIGGER.

is_grantable

yes_or_no

Indica se a permissão pode ser concedida a outros usuários. YES indica que a permissão pode ser concedida a outros usuários e NO indica que a permissão não pode ser concedida a outros usuários.

with_hierarchy

yes_or_no

Indica se operações específicas podem ser herdadas no nível da tabela. Se a operação específica for SELECT, YES será exibido. Caso contrário, NO será exibido.

Na figura anterior, o usuário u2 tem todas as permissões da tabela t2 no esquema u2 e a permissão SELECT da tabela t1 no esquema u1.

information_schema.table_privileges pode consultar apenas as permissões concedidas diretamente ao usuário, a função has_table_privilege() pode consultar tanto permissões concedidas diretamente quanto permissões indiretas (obtidas pela função GRANT para o usuário). Por exemplo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
CREATE TABLE t1 (c1 int);
CREATE USER u1 password '********';
CREATE USER u2 password '********';
GRANT dbadmin to u2; //Indirectly grant permissions through roles.
GRANT SELECT on t1 to u1; // Directly grant the permission.

SET ROLE u1 password '********';
SELECT * FROM public.t1; // Directly grant the permission to access the table.
 c1 
----
(0 rows)

SET ROLE u2 password '********';
SELECT * FROM public.t1; // Indirectly grant the permission to access the table.
 c1 
----
(0 rows)

RESET role; //Switch back to dbadmin.
SELECT * FROM information_schema.table_privileges WHERE table_name = 't1'; // Can only view direct grants.
 grantor |  grantee   | table_catalog | table_schema | table_name | privilege_type | is_grantable | with_hierarchy
---------+------------+---------------+--------------+------------+----------------+--------------+----------------
 dbadmin | u1         | gaussdb       | public       | t1         | SELECT         | NO           | YES
(1 rows)

SELECT has_table_privilege('u2', 'public.t1', 'select'); // Can view both direct and indirect grants.
 has_table_privilege 
---------------------
 t
(1 row)