Quelqu'un peut-il me conseiller sur la manière de créer un utilisateur dans Oracle 11g et ne lui octroyer que la possibilité d'exécuter une procédure stockée particulière et les tables de cette procédure?.
Je ne sais pas trop comment faire ça!
Connecter en tant que SYSTEM.
CREATE USER username IDENTIFIED BY apassword;
GRANT CONNECT TO username;
GRANT EXECUTE on schema.procedure TO username;
Vous devrez peut-être aussi:
GRANT SELECT [, INSERT] [, UPDATE] [, DELETE] on schema.table TO username;
selon la table utilisée par la procédure.
Suivez les étapes ci-dessous pour créer un utilisateur dans Oracle.
- Se connecter en tant qu'utilisateur système
CONNECT <USER-NAME>/<PASSWORD>@<DATABASE NAME>;
- Créer une requête utilisateur
CREATE USER <USER NAME> IDENTIFIED BY <PASSWORD>;
--Fournir des rôles
GRANT CONNECT,RESOURCE,DBA TO <USER NAME>;
--Fournir des privilèges
GRANT CREATE SESSION GRANT ANY PRIVILEGE TO <USER NAME>;
GRANT UNLIMITED TABLESPACE TO <USER NAME>;
--Fournir l'accès aux tables.
GRANT SELECT,UPDATE,INSERT ON <TABLE NAME> TO <USER NAME>;
La documentation Oracle est complète, en ligne et gratuite. Vous devriez apprendre à l'utiliser. Vous pouvez trouver la syntaxe pour CREATE USER ici et pour GRANT ici ,
Afin de se connecter à la base de données, nous devons accorder un utilisateur privilège CREATE SESSION .
Pour autoriser les nouveaux droits d'utilisateur sur une procédure stockée, nous devons accorder le privilège EXECUTE. Le cédant doit être l’un de ces:
Notez que nous n'aurions normalement pas besoin d'accorder de droits sur les objets utilisés par une procédure stockée pour pouvoir utiliser la procédure. L'autorisation par défaut consiste à exécuter la procédure avec les mêmes droits que le propriétaire de la procédure et à en hériter les droits lors de l'exécution de la procédure. Ceci est couvert par la clause AUTHID. La valeur par défaut est definer (c'est-à-dire propriétaire de la procédure). Ce n'est que si AUTHID est défini sur CURRENT_USER (le demandeur, c'est-à-dire notre nouvel utilisateur) qu'il est nécessaire d'octroyer des droits sur les objets utilisés par la procédure. en savoir plus .
N'utilisez pas cette approche dans des environnements critiques tels que TEST et PROD. Les étapes ci-dessous sont simplement suggérées pour l'environnement local. Pour mon hôte local, je crée l'utilisateur via ces étapes:
REMARQUE IMPORTANTE: Créez votre utilisateur avec les informations d'identification système. Sinon, vous pouvez être confronté à un problème lorsque vous exécutez plusieurs applications sur la même base de données.
CONNECT SYSTEM/<<System_User_Password>>@<<DatabaseName>>; -- connect db with username and password, ignore if you already connected to database.
Puis lancez le script ci-dessous
CREATE USER <<username>> IDENTIFIED BY <<password>>; -- create user with password
GRANT CONNECT,RESOURCE,DBA TO <<username>>; -- grant DBA,Connect and Resource permission to this user(not sure this is necessary if you give admin option)
GRANT CREATE SESSION TO <<username>> WITH ADMIN OPTION; --Give admin option to user
GRANT UNLIMITED TABLESPACE TO <<username>>; -- give unlimited tablespace grant
( EDIT: Si vous rencontrez un problème concernant Oracle ora-28001, le mot de passe a expiré. Cela peut également être utile.
select * from dba_profiles;-- check PASSWORD_LIFE_TIME
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; -- SET IT TO UNLIMITED
Comme mentionné précédemment à plusieurs reprises dans les commentaires, l'utilisation des rôles CONNECT
, RESOURCE
et DBA
est découragée par Oracle.
Vous devez vous connecter en tant que SYS pour créer votre rôle et le ou les utilisateurs auxquels ce rôle a été attribué. Vous pouvez utiliser SQL Developer ou SQL * Plus à votre guise. N'oubliez pas de mentionner le rôle SYSDBA dans la chaîne de connexion. Le connect_identifier
utilise différentes syntaxes.
sqlplus sys/<<password>>@<<connect_identifier>> as sysdba
Supposons que vous avez un 12cR1 comme celui fourni en tant que VM avec le " Journée du développeur Oracle Technology Network ". Les chaînes de connexion peuvent être (pour se connecter au PDB fourni):
sqlplus sys/[email protected]/orcl as sysdba
sqlplus sys@"127.0.0.1/orcl" as sysdba -- to avoid putting the pw in clear
Notez que sous Unix, les guillemets doivent être échappés, sinon ils seront utilisés par le shell. Ainsi, "
devient \"
.
Ensuite, vous créez le rôle MYROLE
et lui accordez d’autres rôles ou privilèges. J'ai ajouté presque le strict minimum pour faire quelque chose d'intéressant:
create role myrole not identified;
grant create session to myrole;
grant alter session to myrole;
grant create table to myrole;
Ensuite, vous créez l'utilisateur MYUSER
. La chaîne qui suit identified by
qui est le mot de passe est sensible à la casse. Le reste n'est pas. Vous pouvez également utiliser des identificateurs délimités SQL (entourés de guillemets "
]) à la place des identificateurs ordinaires convertis en majuscules et soumis à quelques restrictions. Le quota pourrait être unlimited
au lieu de 20m
.
create user myuser identified by myuser default tablespace users profile default account unlock;
alter user myuser quota 20m on users;
grant myrole to myuser;
Finalement, vous vous connectez en tant que nouvel utilisateur.
Veuillez noter que vous pouvez également modifier le profil par défaut ou en fournir un autre pour personnaliser certains paramètres, tels que la période d'expiration des mots de passe, le nombre de tentatives de connexion infructueuses autorisées, etc.
CREATE USER USER_NAME IDENTIFIED BY PASSWORD;
GRANT CONNECT, RESOURCE TO USER_NAME;
CREATE USER books_admin IDENTIFIED BY MyPassword;
GRANT CONNECT TO books_admin;
GRANT CONNECT, RESOURCE, DBA TO books_admin;
GRANT CREATE SESSION GRANT ANY PRIVILEGE TO books_admin;
GRANT UNLIMITED TABLESPACE TO books_admin;
GRANT SELECT, INSERT, UPDATE, DELETE ON schema.books TO books_admin;
https://docs.Oracle.com/cd/B19306_01/network.102/b14266/admusers.htm#i1006107https://chartio.com/resources/tutorials/how- créer-un-utilisateur-et-accorder-des autorisations dans Oracle /
Premier pas:
Connect to a database using System/Password;
deuxième étape:
créer un nom d'utilisateur identifié par un mot de passe; (syntaxe)
Ex: create user manidb idntified by mypass;
troisième étape:
accorder connexion, ressource à nom d'utilisateur; (Syntaxe)
Ex: grant connect,resource to manidb;