Maison  >  Article  >  base de données  >  autorisations utilisateur de requête Oracle

autorisations utilisateur de requête Oracle

王林
王林original
2023-05-07 22:48:0714944parcourir

Dans la base de données Oracle, les autorisations utilisateur font référence aux autorisations qui autorisent ou interdisent les utilisateurs à effectuer certaines opérations. Lorsqu'un utilisateur effectue certaines opérations nécessitant des autorisations spéciales, le système vérifie si l'utilisateur dispose des autorisations correspondantes.

L'interrogation des autorisations des utilisateurs est une tâche importante dans la gestion des bases de données Oracle. Les administrateurs peuvent vérifier les autorisations de l'utilisateur pour comprendre quelles opérations l'utilisateur peut effectuer et comment mieux gérer la base de données. Cet article présentera plusieurs méthodes pour interroger les autorisations des utilisateurs Oracle.

Méthode 1 : Utilisez les vues officiellement fournies par Oracle

Oracle fournit certaines vues pour interroger les autorisations des utilisateurs dans la base de données. Parmi ces vues, les plus couramment utilisées sont les vues "DBA_SYS_PRIVS" et "DBA_TAB_PRIVS". La vue

DBA_SYS_PRIVS contient toutes les informations d'autorisation au niveau du système, y compris les opérations au niveau du système, telles que la création d'utilisateurs, la création de rôles, la modification des paramètres, etc. Cette vue comporte de nombreux champs, parmi lesquels le champ "GRANTEE" représente l'utilisateur qui reçoit ces autorisations.

Pour interroger les autorisations système d'un utilisateur, vous pouvez utiliser l'instruction suivante :

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'username';

La vue DBA_TAB_PRIVS contient des informations d'autorisation sur les tables, les vues et les séquences. Le champ "GRANTEE" représente l'utilisateur qui reçoit ces autorisations, le champ "TABLE_SCHEMA" représente le schéma dans lequel se trouve la table, le champ "TABLE_NAME" représente le nom de la table et le champ "PRIVILEGE" représente les opérations qui l'utilisateur peut effectuer.

Pour interroger les autorisations d'un utilisateur sur une certaine table, vous pouvez utiliser l'instruction suivante :

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'username' AND TABLE_SCHEMA = 'schema_name' AND TABLE_NAME = 'table_name';

Méthode 2 : utiliser les vues USER_SYS_PRIVS et USER_TAB_PRIVS

En plus des vues DBA_SYS_PRIVS et DBA_TAB_PRIVS, Oracle fournit également USER_SYS_PRIVS et USER_TAB_PRIVS. vues pour Interrogez les autorisations au niveau du système et de la table de l’utilisateur actuel.

Pour interroger les autorisations système de l'utilisateur actuel, vous pouvez utiliser l'instruction suivante :

SELECT * FROM USER_SYS_PRIVS;

Pour interroger les autorisations de l'utilisateur actuel sur une table, vous pouvez utiliser l'instruction suivante :

SELECT * FROM USER_TAB_PRIVS WHERE TABLE_NAME = 'table_name';

Méthode 3 : Utiliser la vue V$SESSION

Vue V$SESSION Contient des informations sur toutes les sessions en cours, y compris les informations d'autorisation pour chaque utilisateur. En interrogeant cette vue, vous pouvez obtenir les informations d'autorisation de l'utilisateur actuel.

Pour interroger les autorisations de l'utilisateur actuel, vous pouvez utiliser l'instruction suivante :

SELECT * FROM V$SESSION WHERE AUDSID = USERENV('SESSIONID');

Cette instruction renverra des informations relatives aux autorisations de l'utilisateur actuel, y compris le nom d'utilisateur, le rôle, le nom de l'autorisation, etc.

Méthode 4 : Utiliser les instructions PL/SQL

La dernière méthode consiste à utiliser les instructions PL/SQL pour interroger les autorisations des utilisateurs. Voici un exemple d'interrogation de toutes les autorisations d'un utilisateur :

DECLARE
    v_count NUMBER;
BEGIN
    SELECT COUNT(*) INTO v_count FROM DBA_SYS_PRIVS WHERE GRANTEE = 'username';
    IF v_count > 0 THEN
        DBMS_OUTPUT.PUT_LINE('System privileges:');
        FOR i IN (SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'username' ORDER BY PRIVILEGE) LOOP
            DBMS_OUTPUT.PUT_LINE(i.PRIVILEGE);
        END LOOP;
    END IF;

    SELECT COUNT(*) INTO v_count FROM DBA_TAB_PRIVS WHERE GRANTEE = 'username';
    IF v_count > 0 THEN
        DBMS_OUTPUT.PUT_LINE('Table privileges:');
        FOR i IN (SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'username' ORDER BY TABLE_NAME, PRIVILEGE) LOOP
            DBMS_OUTPUT.PUT_LINE(i.TABLE_NAME || ' ' || i.PRIVILEGE);
        END LOOP;
    END IF;
END;

Ce programme PL/SQL interrogera les autorisations système et table de l'utilisateur et affichera les résultats sur la console.

Conclusion

Interroger les autorisations des utilisateurs d'Oracle est l'une des compétences que les administrateurs de bases de données et les développeurs doivent maîtriser. En utilisant les méthodes ci-dessus, les autorisations des utilisateurs peuvent être facilement interrogées et la base de données peut être mieux gérée et optimisée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn