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 revoco el permiso de CONNECT ON DATABASE de un usuario?
Actualización más reciente 2023-10-12 GMT+08:00

¿Cómo revoco el permiso de CONNECT ON DATABASE de un usuario?

Escenario

En un servicio, el permiso del usuario u1 para conectarse a una base de datos debe ser revocado. Una vez que el comando REVOKE CONNECT ON DATABASE gaussdb FROM u1; se ejecuta correctamente, el usuario u1 todavía puede conectarse a la base de datos. Esto significa que la revocación no tiene efecto.

Análisis de las causas

Si ejecuta el comando REVOKE CONNECT ON DATABASE gaussdb from u1 para revocar los permisos de u1 de usuario, la revocación no surte efecto porque el permiso CONNECT de la base de datos se concede a PUBLIC. Por lo tanto, debe especificar PUBLIC.

  • GaussDB(DWS) proporciona un PUBLIC grupo definido implícitamente que contiene todos los roles. De forma predeterminada, todos los usuarios y roles nuevos tienen los permisos de PUBLIC. Para revocar los permisos de PUBLIC de un usuario o rol, o volver a concederles estos permisos, agregue la palabra clave PUBLIC en la instrucción REVOKE o GRANT.
  • GaussDB(DWS) otorga los permisos para objetos de ciertos tipos al PUBLIC. De forma predeterminada, PUBLIC no concede permisos en tablas, columnas, secuencias, orígenes de datos externos, servidores externos, esquemas y tablas, pero PUBLIC concede los siguientes permisos;
    • CONNECT el permiso de una base de datos
    • CREATE TEMP TABLE el permiso de una base de datos
    • EXECUTE el permiso de una función
    • USAGE el permiso para idiomas y tipos de datos (incluidos dominios)
  • Un propietario de objeto puede revocar los permisos predeterminados concedidos a PUBLIC y conceder permisos a otros usuarios según sea necesario.

Ejemplo de operaciones

Ejecute el siguiente comando para revocar el permiso del usuario u1 para acceder al gaussdb de la base de datos:

  1. Conéctese a la base de datos de GaussDB(DWS) gaussdb.

    1
    2
    gsql -d gaussdb -p 8000 -h 192.168.x.xx -U dbadmin -W password -r
    gaussdb=>
    

  2. Cree el usuario u1.

    1
    gaussdb=> CREATE USER u1 IDENTIFIED BY 'xxxxxxxx';
    

  3. Verifique que el usuario u1 pueda acceder a GaussDB.

    1
    2
    gsql -d gaussdb -p 8000 -h 192.168.x.xx -U u1 -W password -r
    gaussdb=>
    

  4. Conéctese a la base de datos gaussdb como administrador dbadmin y ejecute el comando REVOKE para revocar el permiso de conexión en la base de datos del usuario public.

    1
    gsql -d gaussdb -h 192.168.x.xx -U dbadmin -p 8000 -r
    
    1
    2
    gaussdb=> REVOKE CONNECT ON DATABASE gaussdb FROM public;
    REVOKE
    

  5. Verifique el resultado. Utilice u1 para conectarse a la base de datos. Si se muestra la siguiente información, el permiso connect on database del usuario u1 se ha revocado correctamente:

    1
    2
    3
    gsql -d gaussdb -p 8000 -h 192.168.x.xx -U u1 -W password -r
    gsql: FATAL:  permission denied for database "gaussdb"
    DETAIL:  User does not have CONNECT privilege.