Modification du mot de passe avec Oracle SQL Developer


139

Beaucoup de mes utilisateurs n'utilisent pas SQLPlus. Je ne peux pas leur donner un autre utilisateur. Nous expirons les mots de passe tous les 60 jours.

Je ne parviens pas à faire fonctionner la commande SQLPlus "password" dans SQL Developer.

  1. Lorsque je clique sur exécuter, j'obtiens une erreur de commande non valide
  2. Lorsque je clique sur exécuter le script, rien ne se passe.

Je ne veux pas leur écrire un package pour changer leurs mots de passe car nous avons beaucoup de bases de données. Ai-je une meilleure option?


4
Vous ne pouvez pas modifier un mot de passe expiré dans SQL Developer via la commande SQL. Il n'est pas pris en charge dans la pile JDBC. Vous avez besoin des bibliothèques OCI pour cela. Le développeur SQL a la possibilité de réinitialiser et d'expirer le mot de passe via la pile OCI s'il a été correctement installé. Voir ma réponse pour plus de détails.
Frobbit

Vous pouvez le faire avec SQL Developer 4.1.0.17. Voir ma réponse ci-dessous.
Analyse floue

Réponses:


190

La syntaxe correcte pour mettre à jour le mot de passe à l'aide de SQL Developer est:

alter user user_name identified by new_password replace old_password ;

Vous pouvez vérifier plus d'options pour cette commande ici: ALTER USER-Oracle DOCS


29
De plus, vous devrez peut-être mettre le (s) mot (s) de passe entre guillemets pour échapper à tout caractère spécial du mot de passe. Par exemple, alter user __user_name__ identified by "newp@ss!!!" replace "oldp@ss!!!"Plus d'infos sur asktom.oracle.com/pls/asktom
Bryant Bowman

6
Si votre pwd a expiré, bonne chance de vous connecter pour l'exécuter. Réponses Une question, mais pas LA question.
Ben George

105

Dans une feuille de calcul SQL:

  • Tapez "mot de passe" (sans les guillemets)

  • Mettez en surbrillance, appuyez sur CTRL+ ENTER.

  • L'écran de changement de mot de passe s'affiche.


4
Vous pouvez également faire "password someusername"
Anna

3
Je suppose que vous voulez dire l'action "Exécuter l'instruction". Le raccourci par défaut semble être Ctrl + Entrée .
Álvaro González

70

SQL Developer dispose d'une option de réinitialisation de mot de passe intégrée qui peut fonctionner dans votre situation. Il nécessite également l'ajout d'Oracle Instant Client au poste de travail. Lorsque le client instantané est dans le chemin au lancement du développeur SQL, l'option suivante est activée:

Développeur SQL: menu déroulant affichant l'option de réinitialisation du mot de passe

Oracle Instant Client n'a pas besoin de privilèges d'administrateur pour être installé, mais simplement la possibilité d'écrire dans un répertoire et d'ajouter ce répertoire au chemin des utilisateurs. La plupart des utilisateurs ont les privilèges pour faire cela.

Récapitulatif: pour utiliser la réinitialisation du mot de passe sur Oracle SQL Developer:

  1. Vous devez décompresser Oracle Instant Client dans un répertoire
  2. Vous devez ajouter le répertoire Oracle Instant Client au chemin des utilisateurs
  3. Vous devez ensuite redémarrer Oracle SQL Developer

À ce stade, vous pouvez cliquer avec le bouton droit sur une source de données et réinitialiser votre mot de passe.

Voir http://www.thatjeffsmith.com/archive/2012/11/resetting-your-oracle-user-password-with-sql-developer/ pour une présentation complète

Voir également le commentaire dans la documentation oracle: http://docs.oracle.com/cd/E35137_01/appdev.32/e35117/dialogs.htm#RPTUG41808

Une configuration alternative pour que SQL Developer (testé sur la version 4.0.1) reconnaisse et utilise Instant Client sur OS X est:

  1. Définissez le chemin vers Instant Client dans Préférences -> Base de données -> Avancé -> Utiliser Oracle Client
  2. Vérifiez que le client d'instance peut être chargé avec succès à l'aide des options Configurer ... -> Tester ... de la boîte de dialogue des préférences
  3. (OS X) Reportez-vous à cette question pour résoudre les problèmes liés à la variable d'environnement DYLD_LIBRARY_PATH. J'ai utilisé la commande suivante, puis j'ai redémarré SQL Developer pour récupérer le changement:

    $ launchctl setenv DYLD_LIBRARY_PATH / chemin / vers / oracle / instantclient_11_2


1
Non disponible pour tous les utilisateurs 80 (
Keng

hmmm, ne semble pas fonctionner pour moi. Je me demande si la mise à jour du PATH est vraiment tout ce que vous avez à faire, sur un Mac.
fudo

J'utilise un Mac à la maison, mais un PC Windows au travail. Nous passons bientôt aux macs. Si je trouve les détails, je les posterai.
Frobbit

1
Google est très utile :-) avec lui, j'ai trouvé: oracle.com/technetwork/topics/linuxx86-64soft-092277.html qui peut devenir obsolète. Pour google à nouveau, utilisez goo.gl/kU5ZdM
Frobbit

1
Merci, cela a fonctionné sur Windows 7 64 bits. J'ai dû passer par une étape supplémentaire (qui est la même que la première étape de la configuration OS X ci-dessus), sinon l'option `` réinitialiser le mot de passe '' resterait grisée. 4. Définissez le chemin vers Instant Client dans Préférences -> Base de données -> Avancé -> Utiliser le client Oracle
marciowerner

24

Vos utilisateurs peuvent toujours modifier leurs mots de passe en "modifier uniquement l' utilisateur TheirUserName identifié par nouveau mot de passe ". Ils n'ont pas besoin du privilège ALTER USER pour modifier leur propre mot de passe.


16

En fonction des paramètres d'administration, vous devrez peut-être spécifier votre ancien mot de passe à l'aide de l'option REPLACE

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

le nouveau mot de passe et l'ancien mot de passe peuvent-ils être identiques?
Haris Mehmood

2
Cette réponse est fausse. newpassword et oldpassword sont transposés. Utilisez plutôt stackoverflow.com/a/10809140/643483
Aaron Kurtzhals

1
@AaronKurtzhals La réponse à laquelle vous faites référence dit la même chose que ma réponse. Référencez la documentation oracle ici: docs.oracle.com/cd/B19306_01/server.102/b14200/…
Gerry Gurevich

La principale chose à ajouter (ce qui a été fait par @pgs dans sa réponse à cette même question) est que vous devrez peut-être mettre des guillemets autour des mots de passe s'ils contiennent des caractères spéciaux.
Gerry Gurevich

10

Pour être un peu clair:

Si le nom d'utilisateur: abcdef et l'ancien mot de passe: a123b456, nouveau mot de passe: m987n654

modifier l'utilisateur abcdef identifié par m987n654 remplacer a123b456 ;


9

Je me rends compte qu'il existe de nombreuses réponses, mais j'ai trouvé une solution qui peut être utile à certains. J'ai rencontré le même problème, j'exécute oracle sql develop sur mon ordinateur local et j'ai un tas d'utilisateurs. Je me souviens du mot de passe de l'un de mes utilisateurs et je l'ai utilisé pour réinitialiser le mot de passe d'autres utilisateurs.

Pas:

  1. se connecter à une base de données en utilisant un utilisateur et un mot de passe valides, dans mon cas, tous mes utilisateurs ont expiré sauf "système" et je me souviens de ce mot de passe

  2. trouver le nœud "Other_users" dans l'arborescence comme l'image ci-dessous s'affiche

entrez la description de l'image ici

3.dans l'arborescence "Autres_utilisateurs", trouvez les utilisateurs dont vous souhaitez réinitialiser le mot de passe et faites un clic droit sur la note et sélectionnez "Modifier les utilisateurs"

entrez la description de l'image ici

4. remplissez le nouveau mot de passe dans la boîte de dialogue d'édition de l'utilisateur et cliquez sur "Appliquer". Assurez-vous que vous avez décoché "Mot de passe expiré (l'utilisateur doit changer la prochaine connexion)".

entrez la description de l'image ici

Et cela a fonctionné pour moi, ce n'est pas aussi bon qu'une autre solution car vous devez pouvoir vous connecter à au moins un compte mais cela fonctionne.


7

J'ai confirmé que cela fonctionne dans SQL Developer 3.0.04. Nos mots de passe doivent avoir un caractère spécial, donc la chaîne entre guillemets est nécessaire dans notre cas. Bien sûr, cela ne fonctionne que si le mot de passe n'a pas déjà expiré et que vous êtes actuellement connecté.

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

3
Cette réponse est fausse. newpassword et oldpassword sont transposés. Utilisez plutôt stackoverflow.com/a/10809140/643483
Aaron Kurtzhals

3

Essayez cette solution si l'option Réinitialiser le mot de passe (de SQL Developer) ne fonctionnait pas :

Étape 1: Ouvrez la ligne de commande Run SQL (à partir du menu Démarrer, fourni avec le package d'installation de SQL Developer)

Étape 2: exécutez les commandes suivantes:

entrez la description de l'image ici

Remarque: si le mot de passe a déjà expiré, l' Changing password for <user>option viendra automatiquement.


2

L'option de réinitialisation du mot de passe intégrée peut ne pas fonctionner pour l'utilisateur. Dans ce cas, le mot de passe peut être réinitialisé à l'aide de l'instruction SQL suivante:

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

1

vous pouvez trouver l'utilisateur dans la table DBA_USERS comme

SELECT profile
FROM dba_users
WHERE username = 'MacsP'

Allez maintenant dans sys / system (administrateur) et utilisez la requête

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

Pour vérifier l'état du compte, passez simplement par

SELECT * FROM DBA_USERS.

et vous pouvez voir le statut de votre utilisateur.


1

Vous pouvez maintenant le faire dans SQL Developer 4.1.0.17 , aucun PL / SQL requis, en supposant que vous ayez un autre compte disposant de privilèges administratifs:

  1. Créer une connexion à la base de données dans SQL Developer 4.1.0.17 avec un autre utilisateur administratif
  2. Développez la section "Autres utilisateurs" une fois connecté, puis cliquez avec le bouton droit sur l'utilisateur dont le mot de passe a expiré. Choisissez "Modifier l'utilisateur".
  3. Décochez la case "Mot de passe expiré ...", saisissez un nouveau mot de passe pour l'utilisateur et cliquez sur "Enregistrer".
  4. Travail accompli! Vous pouvez tester en vous connectant avec l'utilisateur dont le mot de passe a expiré, pour confirmer qu'il est à nouveau valide.

1

Il existe un autre moyen de réinitialiser le mot de passe via l' invite de commande ...

1) Accédez au dossier Oracle Database (dans mon cas, Oracle Database 11g Express Edition) dans le menu DÉMARRER.

2) Dans ce dossier, cliquez sur "Exécuter la ligne de commande SQL"

Image du dossier de base de données Oracle

3) Tapez " connect username / password " (votre nom d'utilisateur et ancien mot de passe sans les guillemets)

4) Le message affiché est ...

ERREUR: ORA-28001: le mot de passe a expiré

Changer le mot de passe pour hr

-> Nouveau mot de passe:

Entrez le nom d'utilisateur, l'image du mot de passe

5) Tapez le nouveau mot de passe

6) Retapez le nouveau mot de passe

7) Le message affiché est ...

Mot de passe changé Connecté.

SQL>

8) ALLER AU développeur SQL -> tapez le nouveau mot de passe -> connecté


Bien que le PO soit toujours actif, 5 ans après que la question ait été posée, la réponse peut ne plus être pertinente.
Fraise du

@Strawberry si ça répond à la question, pourquoi pas? !!
Muhammed Refaat

1

Une note pour les personnes qui n'ont peut-être pas le mot de passe défini pour sysdba ou sys et utilisent régulièrement un client tiers. Voici quelques informations sur la connexion à la ligne de commande sqlplus sans mot de passe qui m'ont aidé. J'utilise fedora 21 d'ailleurs.

locate sqlplus

Dans mon cas, sqlplus se trouve ici:

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

Maintenant, cours

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

Vous devez maintenant vous connecter à la base de données avec vos anciennes informations d'identification. Vous pouvez trouver le modèle fourni par Oracle dans votre sortie:

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

Dans mon cas, j'ai l'utilisateur "oracle" avec le mot de passe "oracle" donc mon entrée ressemble à

connect oracle/oracle@XE

Terminé. Tapez maintenant votre nouveau mot de passe deux fois. Ensuite, si vous ne voulez plus que votre mot de passe expire, vous pouvez exécuter

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.