2009-07-08 19 views
145

मैं विकास के लिए ओरेकल का उपयोग कर रहा हूं। बूटस्ट्रैप खाते के लिए पासवर्ड जिसे मैं हमेशा अपने डेटाबेस का पुनर्निर्माण करने के लिए उपयोग करता हूं, समाप्त हो गया है।मैं ओरेकल पासवर्ड की समाप्ति कैसे बंद कर सकता हूं?

मैं इस उपयोगकर्ता (और अन्य सभी उपयोगकर्ताओं) के लिए स्थायी रूप से पासवर्ड समाप्ति कैसे बंद कर सकता हूं?

मैं ओरेकल 11 जी का उपयोग कर रहा हूं, जिसका पासवर्ड डिफ़ॉल्ट रूप से समाप्त हो गया है।

+0

का जवाब कर सकते हैं। मैं इसे मजबूर नहीं कर रहा हूं क्योंकि आपने कहा था कि आप इसे विकास के लिए उपयोग कर रहे हैं, और मुझे लगता है कि यहां कोई मौका है कि यहां कोई व्यक्ति जानता होगा और/या यहां अन्य लोगों को इस जानकारी से फायदा हो सकता है। –

+0

मुझे लगता है कि मैं बस यही करूँगा। मैं बहस कर रहा था कि यह साइट किस लिए अधिक उपयुक्त थी, क्योंकि यह एक मूल डेटाबेस प्रश्न है और इतना डीबीए चीज नहीं है। –

+0

सुनिश्चित नहीं है कि डुप्ली नीति क्रॉस-साइट प्रश्नों के लिए क्या है, लेकिन यहां लिंक है: http://serverfault.com/questions/37622/how-do-i-turn-off-oracle-password-expiration –

उत्तर

253

Oracle में एक निश्चित उपयोगकर्ता प्रोफ़ाइल के लिए पासवर्ड समाप्ति नीति को बदलने के लिए सबसे पहले जो उपयोगकर्ता को प्रोफ़ाइल का उपयोग करने में है:

select profile from DBA_USERS where username = '<username>'; 

तो फिर तुम सीमा को बदल सकते हैं का उपयोग कर समय सीमा समाप्त नहीं करने के लिए:

alter profile <profile_name> limit password_life_time UNLIMITED; 

आप उपयोग कर सकते हैं यदि आप पहले सीमा जाँच करना चाहते हैं:

select resource_name,limit from dba_profiles where profile='<profile_name>'; 
+4

इसने प्रोफ़ाइल को बदल दिया। हालांकि, मेरे पास ऐसे उपयोगकर्ता हैं जिनके पासवर्ड समाप्त होने के लिए सेट हैं क्योंकि डिफ़ॉल्ट प्रोफ़ाइल को तब बनाया गया था जब वे बनाए गए थे। मैं इन उपयोगकर्ता खातों को कैसे बदलूं ताकि पासवर्ड समाप्त न हो? –

+9

'खाता_स्टैटस देखने के लिए dba_users से उपयोगकर्ता नाम, expiry_date, account_status का चयन करें; ' । खाते की समाप्ति के लिए , आपको अंतिम बार एक बार पासवर्ड रीसेट करने की आवश्यकता हो सकती है। –

+4

उपयोगकर्ता aaa खाता अनलॉक करें; –

16

मुझे विश्वास है कि डिफ़ॉल्ट रूप से पासवर्ड समाप्ति व्यवहार कभी समाप्त नहीं होता है। हालांकि, आप अपने dev उपयोगकर्ता सेट के लिए एक प्रोफ़ाइल सेट अप कर सकते हैं और PASSWORD_LIFE_TIME सेट कर सकते हैं। अधिक जानकारी के लिए orafaq देखें। आप एक व्यक्ति के परिप्रेक्ष्य और उपयोग के उदाहरण के लिए here देख सकते हैं।

+7

मुझे लगता है कि अनुशंसित बेहतर सुरक्षा के साथ एक ताजा 11 जी इंस्टॉल (अपग्रेड के विपरीत), पासवर्ड 30 दिनों के बाद समाप्त हो जाएंगे। –

+1

11 जी पर यह 180 दिन है: http://docs.oracle.com/cd/E38689_01/pt853pbr0/eng/pt/tadm/task_WorkingWithOracle11gSecurityFeatures-3e78fd.html –

77

फो आर विकास यदि कोई अन्य प्रोफ़ाइल सेट नहीं की गई है तो आप पासवर्ड नीति अक्षम कर सकते हैं (यानी। डिफ़ॉल्ट रूप से पासवर्ड समाप्ति अक्षम करें):

ALTER PROFILE "DEFAULT" LIMIT PASSWORD_VERIFY_FUNCTION NULL; 

फिर, पासवर्ड रीसेट करें और उपयोगकर्ता खाता अनलॉक करें। यह फिर से समाप्त हो जाएगा कभी नहीं:

alter user user_name identified by new_password account unlock; 
+0

धन्यवाद, यह सिर्फ अच्छा काम करता है! – grep

32

अन्य उत्तर राज्य के रूप में, उपयोगकर्ता के प्रोफ़ाइल (जैसे 'डिफ़ॉल्ट' प्रोफ़ाइल) उचित रूप से, पासवर्ड के लिए नेतृत्व करेंगे कि एक बार सेट, समय सीमा समाप्त हो कभी नहीं होगा बदलते।

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

बंद कर दिया खातों के साथ समाप्त पासवर्ड (एक आंसरिंग टिप्पणी में प्रदान की जाती के रूप में) के लिए समाधान ALTER उपयोगकर्ता आदेश में से एक संस्करण का उपयोग करने के लिए है:

ALTER USER xyz_user ACCOUNT UNLOCK; 

हालांकि अनलॉक आदेश केवल खातों जहां खाता है के लिए काम करता वास्तव में बंद कर दिया गया है, लेकिन उन खातों के लिए नहीं जो अनुग्रह अवधि में हैं, जहां पासवर्ड समाप्त हो गया है लेकिन खाता अभी तक बंद नहीं हुआ है।

ALTER USER xyz_user IDENTIFIED BY new_password; 

नीचे एक छोटे से एसक्यूएल * प्लस स्क्रिप्ट कि एक विशेषाधिकार प्राप्त उपयोगकर्ता (जैसे उपयोगकर्ता SYS ') एक उपयोगकर्ता का पासवर्ड रीसेट करने के लिए उपयोग कर सकते हैं: इन खातों के लिए पासवर्ड ALTER उपयोगकर्ता आदेश का एक और संस्करण के साथ रीसेट किया जाना चाहिए डेटाबेस में संग्रहीत मौजूदा मौजूदा हैश मान के लिए।

REM Tell SQL*Plus to show before and after versions of variable substitutions 
SET VERIFY ON 
SHOW VERIFY 

REM Tell SQL*Plus to use the ampersand '&' to indicate variable substitution expansion 
SET DEFINE '&' 
SHOW DEFINE 

REM Specify in a SQL*Plus variable the account to 'reset' 
DEFINE USER_NAME = 'xyz_user' 

REM Show the status of the account before reset 
SELECT 
    ACCOUNT_STATUS, 
    TO_CHAR(LOCK_DATE, 'YYYY-MM-DD HH24:MI:SS') AS LOCK_DATE 
FROM 
    DBA_USERS 
WHERE 
    USERNAME = '&USER_NAME'; 

REM Create a SQL*Plus variable to hold the hash of existing password 
DEFINE OLD_PASSWORD = "" 

REM Tell SQL*Plus where to store the value to be selected with SQL 
COLUMN PWORDHASH NEW_VALUE OLD_PASSWORD 

REM Select the old hash password as a delimited string 
SELECT 
    '''' || PASSWORD || '''' AS PWORDHASH 
FROM 
    SYS.USER$ 
WHERE 
    NAME = '&USER_NAME'; 

REM Show the contents of the SQL*Plus variable 
DEFINE OLD_PASSWORD 

REM Reset the password 
ALTER USER &USER_NAME IDENTIFIED BY VALUES &OLD_PASSWORD; 

REM Show the status of the account after reset 
SELECT 
    ACCOUNT_STATUS, 
    TO_CHAR(LOCK_DATE, 'YYYY-MM-DD HH24:MI:SS') AS LOCK_DATE 
FROM 
    DBA_USERS 
WHERE 
    USERNAME = '&USER_NAME'; 
+0

बहुत अच्छा, धन्यवाद – dreyln

+1

मदद के लिए धन्यवाद। प्रासंगिक उत्तर ढूंढना बहुत मुश्किल है। हर दूसरे उत्तर केवल PASSWORD_LIFE_TIME को संदर्भित करता है। – sabertiger

+0

SYS.USER $ .PASSWORD कॉलम में केवल पासवर्ड के गैर-केस-संवेदनशील (अपरकेस?) संस्करण का हैश होगा। ओरेकल 11 में, जब तक आप सिस्टम पैरामीटर सेट नहीं करते हैं SEC_CASE_SENSITIVE_LOGON = FALSE SYS.USER $ .SPARE4 कॉलम में केस संवेदनशील पासवर्ड का एक लंबा लंबा हैश होगा। – Morbo

1

मैं के रूप में यह गोपनीयता, अखंडता और डेटा की उपलब्धता के लिए संभावित जोखिम का कारण बन सकता है अपने नहीं एक अच्छा विचार पासवर्ड समाप्ति बंद करने के लिए सुझाव देगा।

हालांकि यदि आप ऐसा चाहते हैं।

उचित पहुंच उपयोग एसक्यूएल निम्नलिखित है, तो

का चयन करें उपयोगकर्ता नाम, dba_users से account_status;

इससे आपको परिणाम मिलना चाहिए।

USERNAME      ACCOUNT_STATUS 
------------------------------ ----------------- 

SYSTEM       OPEN 
SYS       OPEN 
SDMADM       OPEN 
MARKETPLACE     OPEN 
SCHEMAOWNER     OPEN 
ANONYMOUS      OPEN 
SCHEMAOWNER2     OPEN 
SDMADM2      OPEN 
SCHEMAOWNER1     OPEN 
SDMADM1      OPEN 
HR        EXPIRED(GRACE) 

USERNAME      ACCOUNT_STATUS 
------------------------------ ----------------- 

APEX_PUBLIC_USER    LOCKED 
APEX_040000     LOCKED 
FLOWS_FILES     LOCKED 
XS$NULL      EXPIRED & LOCKED 
OUTLN       EXPIRED & LOCKED 
XDB       EXPIRED & LOCKED 
CTXSYS       EXPIRED & LOCKED 
MDSYS       EXPIRED & LOCKED 

अब तुम मुझे लगता है कि आप serverfault.com पर इस पूछ से बेहतर हो सकता है पेड्रो Carrico https://stackoverflow.com/a/6777079/2432468

संबंधित मुद्दे

 संबंधित मुद्दे