Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ GaussDB(DWS)/ Preguntas frecuentes/ Cuenta, contraseña y permisos/ ¿Cómo puedo ver los permisos de tabla de un usuario?
Actualización más reciente 2023-10-12 GMT+08:00

¿Cómo puedo ver los permisos de tabla de un usuario?

Escenario 1: Ejecute el comando information_schema.table_privileges a view the table permissions of a user. Por ejemplo:

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

Tabla 1 Columnas de table_privileges

Columna

Tipo de datos

Descripción

grantor

sql_identifier

Concedidor de permisos

grantee

sql_identifier

Concesionario del permiso

table_catalog

sql_identifier

Base de datos donde se encuentra la tabla

table_schema

sql_identifier

Esquema donde se encuentra la tabla

table_name

sql_identifier

Nombre de la tabla

privilege_type

character_data

Tipo de permiso concedido. El valor puede ser SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, ANALYZE, VACUUM, ALTER, DROP o TRIGGER.

is_grantable

yes_or_no

Indica si el permiso se puede conceder a otros usuarios. YES indica que el permiso se puede conceder a otros usuarios, y NO indica que el permiso no se puede conceder a otros usuarios.

with_hierarchy

yes_or_no

Indica si se permiten operaciones específicas heredadas en el nivel de tabla. Si la operación específica es SELECT, se muestra YES. De lo contrario, se muestra NO.

En la figura anterior, el usuario u2 tiene todos los permisos de la tabla t2 en el esquema u2 y el permiso SELECT de la tabla t1 en el esquema u1.

information_schema.table_privileges solo puede consultar los permisos concedidos directamente al usuario, la función has_table_privilege() puede consultar tanto los permisos concedidos directamente como los permisos indirectos (obtenidos por el rol de GRANT al usuario). Por ejemplo:

 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)

Escenario 2: Para check whether a user has permissions on a table, realice los siguientes pasos: