1
votes

Quels sont les rôles et privilèges à donner à un utilisateur pour exécuter CRUD (sur Oracle 12)

Je crée un USER sur la base de données Oracle 12 c , à l'aide de TOAD .

Après avoir créé le TABLESPACE , je crée le USER . Je ne comprends pas vraiment les nombreux RÔLES et PRIVILÈGES qui peuvent être attribués à un UTILISATEUR.

Quels sont les rôles et privilèges minimum / standard qu'un utilisateur doit avoir pour effectuer l'opération CRUD et pouvoir «éditer» la base de données (créer ou supprimer une table, DROP le schéma ecc) de TOAD?

Merci


0 commentaires

3 Réponses :


1
votes

Un lien vers la documentation - Privilèges


Accordez à l'utilisateur les privilèges suivants:

  • CREATE SESSION (afin de permettre à l'utilisateur de se connecter à la base de données)
  • INSÉRER
  • MISE À JOUR
  • SUPPRIMER
  • SELECT

Utilisez la commande ci-dessous pour accorder des privilèges à l'utilisateur (vous devez vous connecter en tant que SYS ou SYSTEM ou un autre utilisateur disposant du privilège GRANT):

GRANT CREATE SESSION, SELECT, UPDATE, DETETE, INSERT TO user_name


4 commentaires

Merci pour votre réponse. Je suppose que, sur TOAD, je dois sélectionner "insérer n'importe quelle table", "supprimer n'importe quelle table", et bien sûr créer une séquence. Est ce juste? Pour ce qui concerne le rôle, lequel dois-je sélectionner?


J'ai mis à jour la réponse, il existe maintenant une commande qui vous permet d'y accorder des privilèges.


Sauf erreur de ma part, la commande GRANT que vous avez postée est erronée à 50%. Ce qui est correct, c'est accorder une session de création à nom_utilisateur . Le reste n'a pas de sens dans ce contexte.


Merci à tous :)



1
votes

Cela dépend des opérations que vous allez effectuer. Si vous souhaitez travailler uniquement avec des tables de votre propre schéma de base de données, les privilèges suivants sont généralement suffisants pour démarrer:

alter user <your_user> default tablespace <your_tablespace_name>;

Vous disposez des droits par défaut pour insérer / mettre à jour / supprimer / sélectionner des tables qui vous possédez.

Quota d'espace de table:

alter user <your_user> quota unlimited on <your_tablespace_name>;

Il est préférable de définir l'espace de table par défaut pour l'utilisateur. Dans ce cas, vous pouvez omettre le nom du tablespace dans une instruction create table.

grant create session to <your_user>;
grant create table to <your_user>;


0 commentaires

1
votes

Voici une suggestion que vous pourriez (ou pas) vouloir suivre.

En tant qu'utilisateur privilégié (tel que SYS), vérifiez les tablespaces disponibles dans votre base de données. J'utilise 11g XE (Express Edition) qui montre ce qui suit:

SQL> create view v_dual as select * From dual;
create view v_dual as select * From dual
            *
ERROR at line 1:
ORA-01031: insufficient privileges


SQL> connect sys@xe as sysdba
Enter password:
Connected.
SQL> grant create view to mdp;

Grant succeeded.

SQL> connect mdp/pdm@xe
Connected.
SQL> create view v_dual as select * From dual;

View created.

SQL>

Maintenant, créez un utilisateur:

SQL> connect mdp/pdm@xe
Connected.
SQL> create table test (id number);

Table created.

SQL> insert into test id values (1);

1 row created.

SQL> drop table test;

Table dropped.

SQL>

Il y a très longtemps, il y avait deux rôles prédéfinis populaires appelés CONNECT et RESOURCE qui se voyaient attribuer certains des privilèges les plus fréquents, donc les gens aimaient simplement accorder ces rôles aux nouveaux utilisateurs.

De nos jours, vous ne devriez pas faire cela: accordez seulement un ensemble minimal de privilèges dont votre utilisateur pourrait avoir besoin. Le premier est CREATE SESSION ; sans cela, votre utilisateur ne pourra même pas établir de connexion.

SQL> grant create table to mdp;

Grant succeeded.

Ensuite, vous voudrez créer des tables alors - accordez-le:

SQL> grant create session to mdp;

Grant succeeded.

OK, connectons-nous en tant que utilisateur nouvellement créé et faites quelque chose :

SQL> create user mdp identified by pdm
  2  default tablespace users
  3  temporary tablespace temp
  4  quota unlimited on users;

User created.

Bien; Je peux créer des tableaux, insérer / mettre à jour / supprimer / sélectionner parmi eux. Pour commencer, cela suffit. Cependant, lorsqu'il s'avère que vous souhaitez, par exemple, créer une vue, cela ne fonctionnera pas tant que vous ne lui accorderez pas ce privilège:

SQL> show user
USER is "SYS"
SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1        
TEMP            --> temporary
USERS           --> my data

Et ainsi de suite ; n'accordez rien simplement parce que vous pourriez en avoir besoin - accordez-le si et quand vous en avez besoin. Faites particulièrement attention aux privilèges système qui peuvent être potentiellement dangereux si vous ne savez pas ce que vous faites.


1 commentaires

Merci encore :)