Kann mich jemand beraten, wie man einen Benutzer in Oracle 11g erstellt und diesem Benutzer nur die Möglichkeit gibt, nur eine bestimmte gespeicherte Prozedur und die Tabellen in dieser Prozedur auszuführen.
Ich bin mir nicht sicher, wie ich das machen soll!
oracle
oracle11g
access-control
Andy5
quelle
quelle
CONNECT
Rolle jedoch über viel mehr Berechtigungen als der Name vermuten lässt. Ich würdeCREATE SESSION
stattdessen viel lieber gewähren .Führen Sie die folgenden Schritte aus, um einen Benutzer in Oracle zu erstellen.
--Verbinden Sie sich als Systembenutzer
- Benutzerabfrage erstellen
CREATE USER <USER NAME> IDENTIFIED BY <PASSWORD>;
- Rollen bereitstellen
GRANT CONNECT,RESOURCE,DBA TO <USER NAME>;
--Berechtigungen bereitstellen
GRANT CREATE SESSION, GRANT ANY PRIVILEGE TO <USER NAME>; GRANT UNLIMITED TABLESPACE TO <USER NAME>;
--Bieten Sie Zugriff auf Tabellen.
GRANT SELECT,UPDATE,INSERT ON <TABLE NAME> TO <USER NAME>;
quelle
CONNECT,RESOURCE,DBA
"Diese Rollen werden aus Gründen der Kompatibilität mit früheren Versionen von Oracle Database bereitgestellt. Oracle empfiehlt, dass Sie Ihre eigenen Rollen für die Datenbanksicherheit entwerfen, anstatt sich auf diese Rollen zu verlassen. Diese Rollen werden möglicherweise von zukünftigen Versionen von Oracle Database nicht automatisch erstellt."Die Oracle-Dokumentation ist umfassend, online und kostenlos. Sie sollten lernen, es zu benutzen. Die Syntax für CREATE USER finden Sie hier und für GRANT hier .
Um eine Verbindung zur Datenbank herzustellen, müssen wir einem Benutzer das Privileg CREATE SESSION erteilen .
Um die neuen Benutzerrechte für eine gespeicherte Prozedur zuzulassen, müssen wir das EXECUTE-Privileg gewähren. Der Stipendiat muss einer von diesen sein:
Beachten Sie, dass wir normalerweise keine Rechte für Objekte gewähren müssen, die von einer gespeicherten Prozedur verwendet werden, um die Prozedur zu verwenden. Die Standardberechtigung besteht darin, dass wir die Prozedur mit denselben Rechten wie der Prozedureigentümer ausführen und ihre Rechte bei der Ausführung der Prozedur sozusagen erben. Dies wird durch die AUTHID-Klausel abgedeckt. Der Standardwert ist definer (dh Prozedureigentümer). Nur wenn die AUTHID auf CURRENT_USER (der Aufrufer, das ist unser neuer Benutzer) gesetzt ist, müssen wir Rechte für Objekte gewähren, die von der Prozedur verwendet werden. Erfahren Sie mehr .
quelle
Verwenden Sie diesen Ansatz nicht in kritischen Umgebungen wie TEST und PROD. Die folgenden Schritte werden nur für die lokale Umgebung vorgeschlagen. Für meinen localhost erstelle ich den Benutzer über folgende Schritte:
WICHTIGER HINWEIS: Erstellen Sie Ihren Benutzer mit SYSTEM-Benutzeranmeldeinformationen. Andernfalls können Probleme auftreten, wenn Sie mehrere Anwendungen in derselben Datenbank ausführen.
CONNECT SYSTEM/<<System_User_Password>>@<<DatabaseName>>; -- connect db with username and password, ignore if you already connected to database.
Führen Sie dann das folgende Skript aus
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
BEARBEITEN: Wenn Sie ein Problem mit Oracle ora-28001 haben, ist das Passwort abgelaufen. Dies kann auch eine nützliche Ausführung sein
select * from dba_profiles;-- check PASSWORD_LIFE_TIME ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; -- SET IT TO UNLIMITED
quelle
CONNECT,RESOURCE,DBA
"Diese Rollen werden aus Gründen der Kompatibilität mit früheren Versionen von Oracle Database bereitgestellt. Oracle empfiehlt, dass Sie Ihre eigenen Rollen für die Datenbanksicherheit entwerfen, anstatt sich auf diese Rollen zu verlassen. Diese Rollen werden möglicherweise von zukünftigen Versionen von Oracle Database nicht automatisch erstellt."Wie bereits mehrfach in den Kommentaren, die Verwendung der erwähnten
CONNECT
,RESOURCE
undDBA
Rollen , die von Oracle abgeraten.Sie müssen sich als SYS verbinden, um Ihre Rolle und die Benutzer zu erstellen, denen diese Rolle zugewiesen wurde. Sie können SQL Developer oder SQL * Plus nach Belieben verwenden. Vergessen Sie nicht, die SYSDBA-Rolle in der Anmeldezeichenfolge anzugeben. Das
connect_identifier
verwendet unterschiedliche Syntaxen.Angenommen, Sie haben einen 12cR1 wie den, der als VM mit dem " Oracle Technology Network Developer Day " bereitgestellt wird . Die Verbindungszeichenfolgen könnten sein (um eine Verbindung zum bereitgestellten PDB herzustellen):
sqlplus sys/[email protected]/orcl as sysdba sqlplus sys@"127.0.0.1/orcl" as sysdba -- to avoid putting the pw in clear
Beachten Sie, dass unter Unix die Anführungszeichen maskiert werden müssen, da sie sonst von der Shell verwendet werden. So
"
wird\"
.Anschließend erstellen Sie die Rolle
MYROLE
und gewähren ihr andere Rollen oder Berechtigungen. Ich habe fast das Nötigste hinzugefügt, um etwas Interessantes zu tun:create role myrole not identified; grant create session to myrole; grant alter session to myrole; grant create table to myrole;
Als nächstes erstellen Sie den Benutzer
MYUSER
. Die folgende Zeichenfolge,identified by
die das Kennwort ist, unterscheidet zwischen Groß- und Kleinschreibung. Der Rest ist nicht. Sie können auch SQL-getrennte Bezeichner (umgeben von Anführungszeichen"
) anstelle von regulären Bezeichnern verwenden, die in Großbuchstaben konvertiert werden und einigen Einschränkungen unterliegen. Die Quote könnteunlimited
stattdessen sein20m
.create user myuser identified by myuser default tablespace users profile default account unlock; alter user myuser quota 20m on users; grant myrole to myuser;
Schließlich verbinden Sie sich als Ihr neuer Benutzer.
Bitte beachten Sie, dass Sie auch das Standardprofil ändern oder ein anderes angeben können, um einige Einstellungen wie die Ablaufdauer von Kennwörtern, die Anzahl der zulässigen fehlgeschlagenen Anmeldeversuche usw. anzupassen.
quelle
CREATE USER USER_NAME IDENTIFIED BY PASSWORD; GRANT CONNECT, RESOURCE TO USER_NAME;
quelle
CONNECT,RESOURCE,DBA
"Diese Rollen werden aus Gründen der Kompatibilität mit früheren Versionen von Oracle Database bereitgestellt. Oracle empfiehlt, dass Sie Ihre eigenen Rollen für die Datenbanksicherheit entwerfen, anstatt sich auf diese Rollen zu verlassen. Diese Rollen werden möglicherweise von zukünftigen Versionen von Oracle Database nicht automatisch erstellt."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#i1006107 https://chartio.com/resources/tutorials/how-to-create-a-user-and-grant -permissions-in-oracle /
quelle
Erster Schritt:
Connect to a database using System/Password;
zweiter Schritt:
Ex: create user manidb idntified by mypass;
dritter Schritt:
Ex: grant connect,resource to manidb;
quelle
Schritt 1 .
create user raju identified by deshmukh;
Schritt 2.
grant connect , resource to raju;
Schritt 3.
grant unlimitted tablespace to raju;
Schritt 4.
grant select , update , insert , alter to raju;
quelle
CONNECT,RESOURCE,DBA
"Diese Rollen werden aus Gründen der Kompatibilität mit früheren Versionen von Oracle Database bereitgestellt. Oracle empfiehlt, dass Sie Ihre eigenen Rollen für die Datenbanksicherheit entwerfen, anstatt sich auf diese Rollen zu verlassen. Diese Rollen werden möglicherweise von zukünftigen Versionen von Oracle Database nicht automatisch erstellt."