En supposant que vous êtes l'administrateur de la machine, Ubuntu vous a accordé le droit de sudo pour exécuter n'importe quelle commande sous n'importe quel utilisateur.
En supposant également que vous n'avez pas restreint les droits dans la pg_hba.conf
(dans le /etc/postgresql/9.1/main
), il devrait contenir cette ligne comme première règle :
# Database administrative login by Unix domain socket
local all postgres peer
(A propos de l'emplacement du fichier : 9.1
est la version majeure de postgres et main
le nom de votre "cluster". Il sera différent si vous utilisez une version plus récente de postgres ou des noms autres que ceux par défaut. Utilisez le pg_lsclusters
pour obtenir ces informations pour votre version/système).
De toute façon, si le pg_hba.conf
ne contient pas cette ligne, éditez le fichier, ajoutez-la, et rechargez le service avec la commande sudo service postgresql reload
.
Ensuite, vous devriez pouvoir vous connecter avec psql
comme superutilisateur de postgres avec cette commande shell :
sudo -u postgres psql
Une fois dans psql, lancez la commande SQL :
ALTER USER postgres PASSWORD 'newpassword';
Dans cette commande, postgres
est le nom d'un superutilisateur. Si l'utilisateur dont le mot de passe est oublié était ritesh
la commande serait :
ALTER USER ritesh PASSWORD 'newpassword';
Références : Documentation PostgreSQL 9.1.13, Chapitre 19. Authentification du client
Gardez à l'esprit que vous devez taper postgres avec un seul S à la fin
Si le fait de laisser le mot de passe en clair dans l'historique des commandes ou le journal du serveur pose un problème, psql fournit une méta-commande interactive pour éviter cela, comme alternative à ALTER USER ... PASSWORD
:
\password username
Il demande le mot de passe avec une entrée en double aveugle, puis le hachageselon la méthode de l'utilisateur. password_encryption
et émettre le ALTER USER
au serveur avec la version hachée du mot de passe, au lieu de la version en texte clair.