मैं Oracle पासवर्ड समाप्ति कैसे बंद करूं?


177

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

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

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


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

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

यह सुनिश्चित न करें कि क्रॉस-साइट प्रश्नों के लिए
द्वैध

जवाबों:


313

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

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>';

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

14
select username,expiry_date,account_status from dba_users; account_status देखने के लिए। खाता समाप्त करने वालों के लिए, आपको अंतिम बार एक बार पासवर्ड रीसेट करना पड़ सकता है।
विल वू

6
परिवर्तन उपयोगकर्ता आगा खाता अनलॉक;
कल्पेश सोनी

1
पूर्णता के लिए, यदि आपको उपयोगकर्ता को किसी अन्य प्रोफ़ाइल में बदलने की आवश्यकता है ALTER USER Bob PROFILE MyNonExpiringProfile;:।

क्वेरी पर कोई पंक्तियाँ नहीं चुनी गईं "DBA_USERS से प्रोफ़ाइल का चयन करें जहां उपयोगकर्ता नाम = '<यूज़रनेम>';"
गौरव

90

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

ALTER PROFILE "DEFAULT" LIMIT PASSWORD_VERIFY_FUNCTION NULL;

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

alter user user_name identified by new_password account unlock;

40

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

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

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

ALTER USER xyz_user ACCOUNT UNLOCK;

हालांकि अनलॉक कमांड केवल उन खातों के लिए काम करता है जहां खाता वास्तव में लॉक है, लेकिन उन खातों के लिए नहीं जो अनुग्रह अवधि में हैं, अर्थात जहां पासवर्ड की समय सीमा समाप्त हो गई है लेकिन खाता अभी तक लॉक नहीं हुआ है। इन खातों के लिए पासवर्ड को ALTER USER कमांड के दूसरे संस्करण के साथ रीसेट किया जाना चाहिए:

ALTER USER xyz_user IDENTIFIED BY new_password;

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

संपादित करें: ओरेकल के पुराने संस्करण पासवर्ड या पासवर्ड-हैश को पॉवर्ड कॉलम में संग्रहीत करते हैं, ओरेकल के नए संस्करण पासवर्ड-हैश को स्पेयर 4 कॉलम में संग्रहीत करते हैं। नीचे दी गई स्क्रिप्ट ने कीवर्ड और स्पेयर 4 कॉलम को एकत्र करने के लिए बदल दिया, लेकिन उपयोगकर्ता के खाते को रीसेट करने के लिए स्पेयर 4 कॉलम का उपयोग करने के लिए; आवश्यकतानुसार संशोधित करें।

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 variables in substitution/expansion.
SET DEFINE '&'
SHOW DEFINE

REM Specify in a SQL*Plus variable the account to 'reset'.
REM Note that user names are case sensitive in recent versions of Oracle.
REM 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,
  TO_CHAR(EXPIRY_DATE, 'YYYY-MM-DD HH24:MI:SS') AS EXPIRY_DATE
FROM
  DBA_USERS
WHERE
  USERNAME = '&USER_NAME';

REM Create SQL*Plus variable to hold the existing values of the password and spare4 columns.
DEFINE OLD_SPARE4 = ""
DEFINE OLD_PASSWORD = ""

REM Tell SQL*Plus where to store the values to be selected with SQL.
REM Note that the password hash value is stored in spare4 column in recent versions of Oracle,
REM   and in the password column in older versions of Oracle.
COLUMN SPARE4HASH NEW_VALUE OLD_SPARE4
COLUMN PWORDHASH NEW_VALUE OLD_PASSWORD

REM Select the old spare4 and password columns as delimited strings 
SELECT 
  '''' || SPARE4 || '''' AS SPARE4HASH,
  '''' || PASSWORD || '''' AS PWORDHASH
FROM 
  SYS.USER$ 
WHERE 
  NAME = '&USER_NAME';

REM Show the contents of the SQL*Plus variables
DEFINE OLD_SPARE4
DEFINE OLD_PASSWORD

REM Reset the password - Older versions of Oracle (e.g. Oracle 10g and older) 
REM ALTER USER &USER_NAME IDENTIFIED BY VALUES &OLD_PASSWORD;

REM Reset the password - Newer versions of Oracle (e.g. Oracle 11g and newer) 
ALTER USER &USER_NAME IDENTIFIED BY VALUES &OLD_SPARE4;

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,
  TO_CHAR(EXPIRY_DATE, 'YYYY-MM-DD HH24:MI:SS') AS EXPIRY_DATE
FROM
  DBA_USERS
WHERE
  USERNAME = '&USER_NAME';

2
सहायता के लिए धन्यवाद। एक प्रासंगिक उत्तर ढूंढना इतना कठिन है। प्रत्येक अन्य उत्तर केवल PASSWORD_LIFE_TIME को संदर्भित करता है।
सबटाइगर

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

16

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


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


0

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

हालाँकि अगर आप ऐसा चाहते हैं।

यदि आपके पास SQL ​​के बाद उचित उपयोग है

चयनित उपयोगकर्ता नाम, खाता_स्टैटस dba_users से;

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

   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

अब आप Pedro Carriço answer https://stackoverflow.com/a/6777079/2432468 का उपयोग कर सकते हैं


जब तक मैं सहमत हूँ कि यह उत्पादन वातावरण में पासवर्ड समाप्ति को निष्क्रिय करने के लिए दाने है हम इसे विकास या परीक्षण में बंद करना चाहते हैं।
एपीसी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.