Oracle 11g में उपयोगकर्ता कैसे बनाएँ और अनुमतियाँ दें


80

क्या कोई मुझे ओरेकल 11 जी में एक उपयोगकर्ता बनाने के बारे में सलाह दे सकता है और केवल उस उपयोगकर्ता को केवल एक विशेष संग्रहीत प्रक्रिया और उस प्रक्रिया में तालिकाओं को निष्पादित करने की क्षमता प्रदान करता है।

मुझे वास्तव में यकीन नहीं है कि यह कैसे करना है!

जवाबों:


86

सिस्टम के रूप में कनेक्ट करें।

CREATE USER username IDENTIFIED BY apassword;

GRANT CONNECT TO username;

GRANT EXECUTE on schema.procedure TO username;

आपको इसकी आवश्यकता भी हो सकती है:

GRANT SELECT [, INSERT] [, UPDATE] [, DELETE] on schema.table TO username;

जो भी तालिका प्रक्रिया का उपयोग करती है।


6
+1 ओरेकल संस्करण पर निर्भर करता है, हालांकि, CONNECTभूमिका के नाम से कई अधिक विशेषाधिकार हैं। मैं CREATE SESSIONइसके बजाय ज्यादा अनुदान देना चाहता हूं ।
जस्टिन गुफा

जो संस्करण मैं उपयोग कर रहा हूं वह 11g
एंडी


3
आपको किसी भी टेबल पर सेलेक्ट, इंसर्ट, अपडेट या डिलीट करने की अनुमति नहीं देनी चाहिए। प्रक्रियाओं का उपयोग करने के बिंदुओं में से एक यह है कि आप अपनी तालिकाओं को "अनारक्षित" रख सकते हैं, और प्रक्रिया स्तर पर उन तक पहुंच को नियंत्रित कर सकते हैं।
दाऊद इब्न करीम

3
"उपयोगकर्ता नाम के लिए स्कीमा। प्रक्रिया पर अनुदान प्राप्त करें;" एक त्रुटि कह रही है "पंक्ति 1 पर त्रुटि: ORA-04042: प्रक्रिया, फ़ंक्शन, पैकेज, या पैकेज बॉडी मौजूद नहीं है"
तस्दिक रहमान

25

Oracle में उपयोगकर्ता बनाने के लिए नीचे दिए गए चरणों का पालन करें।
- सिस्टम उपयोगकर्ता के रूप में कनेक्ट करें

CONNECT <USER-NAME>/<PASSWORD>@<DATABASE NAME>;

- उपयोगकर्ता क्वेरी बनाएँ

CREATE USER <USER NAME> IDENTIFIED BY <PASSWORD>;

- भूमिकाएं प्रदान करें

GRANT CONNECT,RESOURCE,DBA TO <USER NAME>;

- विशेषाधिकार प्रदान करें

GRANT CREATE SESSION, GRANT ANY PRIVILEGE TO <USER NAME>;
GRANT UNLIMITED TABLESPACE TO <USER NAME>;

- टेबल तक पहुँच प्रदान करें।

GRANT SELECT,UPDATE,INSERT ON <TABLE NAME> TO <USER NAME>;

ओरेकल 11 जी में, क्या यह "ग्रांट डीबीए" या "ग्रैंड सिस्डबा" है?
जोंधिनम

2
ORA-00990: 'किसी भी नाम>> के लिए किसी भी निजी संपत्ति को कम करने के लिए गुम या अमान्य विशेषाधिकार;
निकोलस मॉमर्ट्स

4
सत्र के बाद एक अल्पविराम होना चाहिए
कार्तिक प्रसाद

2
'- विशेषाधिकार प्रदान करें' पंक्ति को यहां अल्पविराम की जरूरत है: अनुदान सृजन अनुभाग, किसी भी नाम के लिए निजी नाम> प्राप्त करें>; मैंने इसे संपादित किया लेकिन किसी कारण से अस्वीकार कर दिया गया।
भूत_1989


21

ओरेकल प्रलेखन व्यापक, ऑनलाइन और मुफ्त है। आपको इसका इस्तेमाल करना सीखना चाहिए। आप यहाँ सृजित USER के लिए सिंटैक्स पा सकते हैं और यहाँ GRANT के लिए ,

डेटाबेस से जुड़ने के लिए हमें एक उपयोगकर्ता को सृजन संबंधी विशेषाधिकार प्रदान करने की आवश्यकता है ।

एक संग्रहीत कार्यविधि पर नए उपयोगकर्ता अधिकारों की अनुमति देने के लिए हमें EXECUTE विशेषाधिकार प्रदान करने की आवश्यकता है। अनुदानकर्ता को इनमें से एक होना चाहिए:

  • प्रक्रिया के मालिक
  • उपयोगकर्ता को ADMIN विकल्प के साथ उस प्रक्रिया पर अमल करने की अनुमति दी गई है
  • उपयोगकर्ता किसी भी विशेषाधिकार के साथ अनुदान
  • एक डीबीए या अन्य सुपर उपयोगकर्ता खाता।

ध्यान दें कि आमतौर पर हमें प्रक्रिया का उपयोग करने के लिए किसी संग्रहीत प्रक्रिया द्वारा उपयोग की जाने वाली वस्तुओं पर अधिकार देने की आवश्यकता नहीं होगी। डिफ़ॉल्ट अनुमति यह है कि हम प्रक्रिया के मालिक के रूप में समान अधिकारों के साथ प्रक्रिया को निष्पादित करते हैं और, जैसा कि इस प्रक्रिया को निष्पादित करते समय अपने अधिकारों को प्राप्त करते हैं। यह AUTHID क्लॉज द्वारा कवर किया गया है। डिफ़ॉल्ट निश्चित है (अर्थात प्रक्रिया स्वामी)। केवल अगर AUTHID CURRENT_USER के लिए सेट है (चालान, यही हमारा नया उपयोगकर्ता है) तो क्या हमें प्रक्रिया द्वारा उपयोग की जाने वाली वस्तुओं पर अधिकार देने की आवश्यकता है। अधिक जानकारी प्राप्त करें


10

TEST और PROD जैसे महत्वपूर्ण वातावरण में इन दृष्टिकोण का उपयोग न करें। स्थानीय पर्यावरण के लिए नीचे दिए गए चरणों का सिर्फ सुझाव दिया गया है। अपनी लोकलहोस्ट के लिए मैं इन चरणों के माध्यम से उपयोगकर्ता बनाता हूं:

महत्वपूर्ण नोट: अपने उपयोगकर्ता को सिस्टम उपयोगकर्ता क्रेडेंशियल्स के साथ बनाएं। जब आप एक ही डेटाबेस पर कई एप्लिकेशन चलाते हैं तो आपको समस्या का सामना करना पड़ सकता है।

 CONNECT SYSTEM/<<System_User_Password>>@<<DatabaseName>>; -- connect db with username and password, ignore if you already connected to database.

फिर स्क्रिप्ट के नीचे चलाएँ

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: यदि आपको oracle ora-28001 के बारे में कोई समस्या है, तो पासवर्ड समाप्त हो गया है, यह उपयोगी रन हो सकता है

select * from dba_profiles;-- check PASSWORD_LIFE_TIME 
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; -- SET IT TO UNLIMITED


4

जैसा कि पहले टिप्पणी में कई बार उल्लेख किया गया है CONNECT, RESOURCEऔर DBAओरेकल द्वारा भूमिकाओं का उपयोग हतोत्साहित किया जाता है।

आपको अपनी भूमिका और उपयोगकर्ता (ओं) को बनाने के लिए SYS के रूप में कनेक्ट करना होगा जिन्हें यह भूमिका दी गई है। आप अपनी पसंद के अनुसार SQL डेवलपर या SQL * प्लस का उपयोग कर सकते हैं। लॉगऑन स्ट्रिंग में SYSDBA भूमिका का उल्लेख करना न भूलें। connect_identifierविभिन्न सिंटैक्स का उपयोग करता है।

sqlplus sys/<<password>>@<<connect_identifier>> as sysdba

मान लीजिए कि आपके पास " Oracle Technology Network Developer Day " के साथ VM के रूप में प्रदान किया गया एक 12cR1 है । कनेक्ट स्ट्रिंग्स हो सकती हैं (प्रदान की गई पीडीबी से कनेक्ट करने के लिए):

sqlplus sys/oracle@127.0.0.1/orcl as sysdba
sqlplus sys@"127.0.0.1/orcl" as sysdba -- to avoid putting the pw in clear

ध्यान दें कि यूनिक्स के तहत, उद्धरणों से बचना होगा अन्यथा वे शेल द्वारा भस्म हो जाएंगे। इस प्रकार "बन जाता है \"

फिर आप भूमिका बनाते हैं MYROLEऔर इसे अन्य भूमिकाएँ या विशेषाधिकार प्रदान करते हैं। मैंने कुछ दिलचस्प करने के लिए लगभग नंगे न्यूनतम जोड़े:

create role myrole not identified;
grant create session to myrole;
grant alter session to myrole;
grant create table to myrole;

इसके बाद अपना यूजर बनाएं MYUSER। निम्नलिखित स्ट्रिंग identified byजो पासवर्ड है केस-संवेदी है। बाकी नहीं है। आप "नियमित पहचानकर्ताओं के बजाय SQL सीमांकित पहचानकर्ताओं (उद्धरणों से घिरे ) का उपयोग कर सकते हैं, जो कुछ सीमाओं के अधीन tu अपरकेस और परिवर्तित हैं। इसके unlimitedबजाय कोटा हो सकता है 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;

आखिरकार, आप अपने नए उपयोगकर्ता के रूप में कनेक्ट होते हैं।

कृपया ध्यान दें कि आप डिफ़ॉल्ट प्रोफ़ाइल को बदल सकते हैं या पासवर्ड की समाप्ति अवधि के रूप में कुछ सेटिंग्स को अनुकूलित करने के लिए एक और एक प्रदान कर सकते हैं, अनुमत असफल लॉगिन प्रयासों की संख्या, आदि।


2

0
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 -परिवर्तन-में- oracle /


-1 यह Google पर शीर्ष परिणामों में से एक है, लेकिन यह सबसे खराब सलाह है। यह उदाहरण उपयोगकर्ता को पूर्ण विशेषाधिकारों के साथ एक dba बनाता है। यह "अपने डेटाबेस के नियंत्रण को आत्मसमर्पण करने के लिए कैसे है"
Devon_C_Miller

0

पहला कदम:

Connect to a database using System/Password;

दूसरा कदम:

पासवर्ड द्वारा पहचाना गया उपयोगकर्ता नाम बनाएँ; (वाक्य - विन्यास)

Ex: create user manidb idntified by mypass;

तीसरा चरण:

अनुदान कनेक्ट, उपयोगकर्ता नाम के लिए संसाधन; (वाक्य - विन्यास)

Ex: grant connect,resource to manidb;


-2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.