การเปลี่ยนรหัสผ่านด้วย Oracle SQL Developer


139

ผู้ใช้ของฉันหลายคนไม่ใช้ SQLPlus ฉันไม่สามารถให้ผู้ใช้เปลี่ยนแปลงได้ เราหมดอายุรหัสผ่านทุก 60 วัน

ฉันไม่สามารถรับ "รหัสผ่าน" คำสั่ง SQLPlus เพื่อทำงานในผู้พัฒนา SQL

  1. เมื่อฉันกดรันฉันได้รับข้อผิดพลาดของคำสั่งที่ไม่ถูกต้อง
  2. เมื่อฉันกดรันสคริปต์ไม่มีอะไรเกิดขึ้น

ฉันไม่ต้องการเขียนแพ็คเกจเพื่อเปลี่ยนรหัสผ่านเนื่องจากเรามีฐานข้อมูลจำนวนมาก ฉันมีตัวเลือกที่ดีกว่านี้ไหม?


4
คุณไม่สามารถเปลี่ยนรหัสผ่านที่หมดอายุใน SQL Developer ผ่านคำสั่ง SQL ไม่รองรับใน JDBC stack คุณต้องการไลบรารี OCI สำหรับสิ่งนี้ ผู้พัฒนา SQL มีตัวเลือกในการรีเซ็ตและรหัสผ่านที่หมดอายุผ่านสแต็ค OCI หากมีการติดตั้งอย่างถูกต้อง ดูคำตอบของฉันสำหรับรายละเอียดทั้งหมด
Frobbit

คุณสามารถทำได้ด้วย SQL Developer 4.1.0.17 ดูคำตอบของฉันด้านล่าง
วิเคราะห์ฟัซซี

คำตอบ:


189

ไวยากรณ์ที่ถูกต้องสำหรับการอัพเดตรหัสผ่านโดยใช้SQL Developerคือ:

alter user user_name identified by new_password replace old_password ;

คุณสามารถตรวจสอบตัวเลือกเพิ่มเติมสำหรับคำสั่งนี้ได้ที่นี่: ALTER USER-Oracle DOCS


29
นอกจากนี้คุณอาจต้องใส่รหัสผ่านในเครื่องหมายคำพูดคู่เพื่อหลีกเลี่ยงอักขระพิเศษใด ๆ ในรหัสผ่าน ตัวอย่างเช่น alter user __user_name__ identified by "newp@ss!!!" replace "oldp@ss!!!"ข้อมูลเพิ่มเติมได้ที่asktom.oracle.com/pls/asktom/ …
ไบรอันท์โบว์แมน

6
หาก pwd ของคุณหมดอายุแล้วขอให้โชคดีในการเข้าใช้งาน ตอบคำถาม แต่ไม่ใช่คำถาม
เบ็นจอร์จ

105

ในแผ่นงาน SQL:

  • พิมพ์ "รหัสผ่าน" (ไม่มีเครื่องหมายคำพูด)

  • ไฮไลท์ตี+CTRLENTER

  • หน้าจอเปลี่ยนรหัสผ่านปรากฏขึ้น


4
คุณสามารถทำ "รหัสผ่านชื่อผู้ใช้บางคน"
Anna

3
ฉันคิดว่าคุณหมายถึงการกระทำ "เรียกใช้คำสั่ง" เริ่มต้นตัดสั้นน่าจะเป็นCtrl + Enter
ÁlvaroGonzález

70

SQL Developer มีตัวเลือกการตั้งรหัสผ่านใหม่ซึ่งอาจใช้งานได้กับสถานการณ์ของคุณ มันต้องการเพิ่ม Oracle Instant Client ไปยังเวิร์กสเตชันด้วย เมื่อไคลเอนต์โต้ตอบแบบทันทีอยู่ในเส้นทางเมื่อนักพัฒนา SQL เปิดตัวคุณจะได้รับตัวเลือกต่อไปนี้:

ผู้พัฒนา SQL: เมนูแบบเลื่อนลงแสดงตัวเลือกรหัสผ่านรีเซ็ต

Oracle Instant Client ไม่ต้องการสิทธิ์ผู้ดูแลระบบในการติดตั้งเพียงความสามารถในการเขียนไปยังไดเรกทอรีและเพิ่มไดเรกทอรีนั้นลงในเส้นทางของผู้ใช้ ผู้ใช้ส่วนใหญ่มีสิทธิ์ในการทำเช่นนี้

สรุป: เพื่อใช้รหัสผ่านตั้งค่าใหม่บน Oracle SQL Developer:

  1. คุณจะต้องแตก Oracle Instant Client ในไดเรกทอรี
  2. คุณต้องเพิ่มไดเรกทอรี Oracle Instant Client ไปยังเส้นทางผู้ใช้
  3. จากนั้นคุณต้องรีสตาร์ท Oracle SQL Developer

ณ จุดนี้คุณสามารถคลิกขวาที่แหล่งข้อมูลและรีเซ็ตรหัสผ่านของคุณ

ดูhttp://www.thatjeffsmith.com/archive/2012/11/resetting-your-oracle-user-password-with-sql-developer/สำหรับการเดินผ่านที่สมบูรณ์

ดูความคิดเห็นในเอกสาร oracle: http://docs.oracle.com/cd/E35137_01/appdev.32/e35117/dialogs.htm#RPTUG41808

การกำหนดค่าทางเลือกเพื่อให้ผู้พัฒนา SQL (ทดสอบในรุ่น 4.0.1) รู้จักและใช้งานไคลเอ็นต์ทันใจบน OS X คือ:

  1. ตั้งค่าพา ธ ไปที่ไคลเอ็นต์ทันทีในการกำหนดค่าตามความชอบ -> ฐานข้อมูล -> ขั้นสูง -> ใช้ Oracle Client
  2. ตรวจสอบว่าไคลเอนต์อินสแตนซ์สามารถโหลดได้สำเร็จโดยใช้ตัวเลือก Configure ... -> Test ... จากภายในกล่องโต้ตอบการตั้งค่า
  3. (OS X) อ้างถึงคำถามนี้เพื่อแก้ไขปัญหาที่เกี่ยวข้องกับตัวแปรสภาพแวดล้อม DYLD_LIBRARY_PATH ฉันใช้คำสั่งต่อไปนี้แล้วเริ่ม SQL Developer ใหม่เพื่อรับการเปลี่ยนแปลง:

    $ launchctl setenv DYLD_LIBRARY_PATH / path / to / oracle / instantclient_11_2


1
ไม่พร้อมใช้งานสำหรับผู้ใช้ทั้งหมด 80 (
Keng

อืมดูเหมือนจะไม่ได้ผลสำหรับฉัน ฉันสงสัยว่าการอัปเดต PATH นั้นเป็นเรื่องจริงทั้งหมดที่คุณต้องทำบน Mac
fudo

ฉันใช้ Mac เป็นบ้าน แต่มี windows pc ในที่ทำงาน เรากำลังจะเปลี่ยนไปใช้ Mac เร็ว ๆ นี้ .. หากฉันพบรายละเอียดฉันจะโพสต์พวกเขา
Frobbit

1
Google มีประโยชน์มาก :-) ฉันพบว่า: oracle.com/technetwork/topics/linuxx86-64soft-092277.htmlซึ่งอาจค้าง หากต้องการใช้ google อีกครั้งให้ใช้goo.gl/kU5ZdM
Frobbit

1
ขอบคุณมันทำงานบน Windows 7 64 บิต ฉันต้องผ่านขั้นตอนพิเศษแม้ว่า (ซึ่งเหมือนกับขั้นตอนแรกในการกำหนดค่า OS X ด้านบน) มิฉะนั้นตัวเลือก 'รีเซ็ตรหัสผ่าน' จะยังคงเป็นสีเทา 4. ตั้งค่าพา ธ ไปยังไคลเอนต์ทันทีในการตั้งค่า -> ฐานข้อมูล -> ขั้นสูง -> ใช้ Oracle Client
marciowerner

24

ผู้ใช้ของคุณยังสามารถเปลี่ยนรหัสผ่านได้โดย "แก้ไขผู้ใช้เท่านั้นชื่อผู้ใช้ที่ระบุด้วยรหัสผ่านใหม่" พวกเขาไม่จำเป็นต้องมีสิทธิ์ ALTER USER เพื่อเปลี่ยนรหัสผ่านของตัวเอง


16

คุณอาจต้องระบุรหัสผ่านเก่าของคุณโดยใช้ตัวเลือก REPLACE ทั้งนี้ขึ้นอยู่กับการตั้งค่าผู้ดูแลระบบ

alter user <username> identified by <newpassword> replace <oldpassword> 

รหัสผ่านใหม่และรหัสผ่านเก่าสามารถเหมือนกันได้หรือไม่
Haris Mehmood

2
คำตอบนี้ผิด newpassword และ oldpassword ถูกย้าย ใช้stackoverflow.com/a/10809140/643483แทน
Aaron Kurtzhals

1
@AaronKurtzhals คำตอบที่คุณอ้างอิงบอกว่าเป็นสิ่งเดียวกับที่คำตอบของฉันทำ อ้างอิงเอกสาร oracle ที่นี่: docs.oracle.com/cd/B19306_01/server.102/b14200/ …
Gerry Gurevich

สิ่งสำคัญที่จะเพิ่ม (ซึ่งดำเนินการโดย @pgs ในคำตอบของเขาสำหรับคำถามเดียวกันนี้) คือคุณอาจต้องใส่เครื่องหมายอัญประกาศล้อมรอบรหัสผ่านหากมีอักขระพิเศษ
Gerry Gurevich

10

วิธีทำให้ชัดเจน:

หากชื่อผู้ใช้: abcdef และรหัสผ่านเก่า: a123b456 รหัสผ่านใหม่: m987n654

เปลี่ยนผู้ใช้abcdef ที่ระบุโดยm987n654แทนที่a123b456 ;


9

ฉันรู้ว่ามีคำตอบมากมาย แต่ฉันพบวิธีแก้ปัญหาที่อาจเป็นประโยชน์กับบางคน ฉันพบปัญหาเดียวกันฉันใช้ oracle sql พัฒนาบนคอมพิวเตอร์ของฉันและฉันมีผู้ใช้จำนวนมาก ฉันจำรหัสผ่านสำหรับหนึ่งในผู้ใช้ของฉันและฉันใช้มันเพื่อรีเซ็ตรหัสผ่านของผู้ใช้รายอื่น

ขั้นตอน:

  1. เชื่อมต่อกับฐานข้อมูลโดยใช้ผู้ใช้และรหัสผ่านที่ถูกต้องในกรณีของฉันผู้ใช้ทั้งหมดของฉันหมดอายุยกเว้น "ระบบ" และฉันจำรหัสผ่านนั้นได้

  2. ค้นหาโหนด "Other_users" ภายในแผนผังตามที่แสดงด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

3. ภายในแผนผัง "Other_users" จะค้นหาผู้ใช้ของคุณที่คุณต้องการรีเซ็ตรหัสผ่านและคลิกขวาที่บันทึกย่อและเลือก "แก้ไขผู้ใช้"

ป้อนคำอธิบายรูปภาพที่นี่

4. กรอกรหัสผ่านใหม่ในกล่องโต้ตอบแก้ไขผู้ใช้แล้วคลิก "นำไปใช้" ตรวจสอบให้แน่ใจว่าคุณได้ยกเลิกการเลือก "รหัสผ่านหมดอายุ (ผู้ใช้จะต้องเปลี่ยนการเข้าสู่ระบบครั้งต่อไป)"

ป้อนคำอธิบายรูปภาพที่นี่

และมันใช้งานได้ดีสำหรับฉันมันไม่ดีเท่าโซลูชันอื่น ๆ เพราะคุณต้องสามารถเข้าสู่บัญชีอย่างน้อยหนึ่งบัญชี แต่ใช้งานได้


7

ฉันยืนยันการทำงานนี้ใน SQL Developer 3.0.04 รหัสผ่านของเราจำเป็นต้องมีอักขระพิเศษดังนั้นจึงจำเป็นต้องใช้สตริงที่มีเครื่องหมายคำพูดคู่ในกรณีของเรา แน่นอนว่าจะใช้งานได้หากรหัสผ่านยังไม่หมดอายุและคุณเข้าสู่ระบบในปัจจุบัน

ALTER USER MYUSERID
IDENTIFIED BY "new#password"
REPLACE "old#password"

3
คำตอบนี้ผิด newpassword และ oldpassword ถูกย้าย ใช้stackoverflow.com/a/10809140/643483แทน
Aaron Kurtzhals

3

ลองวิธีนี้ถ้าตัวเลือกรีเซ็ตรหัสผ่าน (ของผู้พัฒนา SQL) ไม่ทำงาน :

ขั้นตอนที่ 1: เปิดเรียกใช้ SQL Command Line (จากเมนูเริ่มซึ่งมาพร้อมกับแพ็คเกจการติดตั้ง SQL Developer)

ขั้นตอนที่ 2: เรียกใช้คำสั่งต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่

หมายเหตุ:หากรหัสผ่านหมดอายุChanging password for <user>ตัวเลือกจะมาโดยอัตโนมัติ


2

ตัวเลือกรหัสผ่านรีเซ็ตในตัวอาจไม่ทำงานสำหรับผู้ใช้ ในกรณีนี้รหัสผ่านสามารถรีเซ็ตได้โดยใช้คำสั่ง SQL ต่อไปนี้:

ALTER user "user" identified by "NewPassword" replace "OldPassword";

1

คุณสามารถค้นหาผู้ใช้ในตาราง DBA_USERS เช่น

SELECT profile
FROM dba_users
WHERE username = 'MacsP'

ตอนนี้ไปที่ sys / ระบบ (ผู้ดูแลระบบ) และใช้แบบสอบถาม

ALTER USER PRATEEK
IDENTIFIED BY "new_password"
REPLACE "old_password"

เพื่อตรวจสอบสถานะบัญชีเพียงแค่ผ่าน

SELECT * FROM DBA_USERS.

และคุณสามารถดูสถานะของผู้ใช้ของคุณ


1

ตอนนี้คุณสามารถทำได้ในSQL Developer 4.1.0.17โดยไม่ต้องใช้ PL / SQL สมมติว่าคุณมีบัญชีอื่นที่มีสิทธิ์ระดับผู้ดูแลระบบ:

  1. สร้างการเชื่อมต่อกับฐานข้อมูลใน SQL Developer 4.1.0.17 กับผู้ใช้ที่เป็นผู้ดูแลระบบสำรอง
  2. ขยายส่วน "ผู้ใช้อื่น ๆ " เมื่อเชื่อมต่อแล้วคลิกขวาที่ผู้ใช้ที่รหัสผ่านหมดอายุ เลือก "แก้ไขผู้ใช้"
  3. ยกเลิกการทำเครื่องหมายที่ช่อง "รหัสผ่านหมดอายุ ... " พิมพ์รหัสผ่านใหม่สำหรับผู้ใช้แล้วกด "บันทึก"
  4. งานเสร็จแล้ว! คุณสามารถทดสอบโดยเชื่อมต่อกับผู้ใช้ที่รหัสผ่านหมดอายุเพื่อยืนยันว่าตอนนี้ใช้ได้อีกครั้ง

1

มีวิธีการตั้งค่ารหัสผ่านใหม่ผ่านทางพรอมต์คำสั่ง ...

1) ไปที่โฟลเดอร์ฐานข้อมูล Oracle (ในกรณีของฉัน Oracle Database 11g Express Edition) ในเมนูเริ่ม

2) ภายในโฟลเดอร์นั้นคลิก "เรียกใช้ SQL Commandline"

รูปภาพโฟลเดอร์ฐานข้อมูล Oracle

3) พิมพ์ " เชื่อมต่อชื่อผู้ใช้ / รหัสผ่าน " (ชื่อผู้ใช้และรหัสผ่านเก่าโดยไม่มีเครื่องหมายคำพูด)

4) ข้อความที่แสดงคือ ...

ข้อผิดพลาด: ORA-28001: รหัสผ่านหมดอายุ

การเปลี่ยนรหัสผ่านสำหรับชั่วโมง

-> รหัสผ่านใหม่:

ใส่ชื่อผู้ใช้ภาพรหัสผ่าน

5) พิมพ์รหัสผ่านใหม่

6) พิมพ์รหัสผ่านใหม่อีกครั้ง

7) ข้อความที่แสดงคือ ...

เปลี่ยนรหัสผ่านแล้ว

SQL>

8) ผู้พัฒนาไปที่ Sql -> พิมพ์รหัสผ่านใหม่ -> เชื่อมต่อ


ในขณะที่ OP ยังคงใช้งานอยู่ 5 ปีหลังจากถามคำถามคำตอบอาจไม่เกี่ยวข้องอีกต่อไป
สตรอเบอร์รี่

@ สตรอเบอร์รี่ถ้าตอบคำถามทำไมล่ะ? !!
Muhammed Refaat

1

หมายเหตุหนึ่งสำหรับผู้ที่อาจไม่มีรหัสผ่านที่กำหนดไว้สำหรับ sysdba หรือ sys และใช้ลูกค้าบุคคลที่สามเป็นประจำ นี่คือข้อมูลเกี่ยวกับการเข้าสู่ sqlplus บรรทัดคำสั่งโดยไม่มีรหัสผ่านที่ช่วยฉัน ฉันใช้ fedora 21 อยู่ดี

locate sqlplus

ในกรณีของฉัน sqlplus ตั้งอยู่ที่นี่:

/u01/app/oracle/product/11.2.0/xe/config/scripts/sqlplus.sh

ตอนนี้ทำงาน

cd /u01/app/oracle/product/11.2.0/xe/config/scripts
./sqlplus.sh / as sysdba

ตอนนี้คุณต้องเชื่อมต่อกับฐานข้อมูลด้วยข้อมูลประจำตัวเก่าของคุณ คุณสามารถค้นหาเทมเพลตของ Oracle ที่มีให้ในผลลัพธ์ของคุณ:

Use "connect username/password@XE" to connect to the database.

ในกรณีของฉันฉันมีผู้ใช้ "oracle" ด้วยรหัสผ่าน "oracle" เพื่อให้การป้อนข้อมูลของฉันดูเหมือน

connect oracle/oracle@XE

เสร็จสิ้น ตอนนี้พิมพ์รหัสผ่านใหม่ของคุณสองครั้ง จากนั้นหากคุณไม่ต้องการให้รหัสผ่านหมดอายุอีกต่อไปคุณสามารถเรียกใช้ได้

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.