1. 程式人生 > 資料庫 >基於PostgreSQL密碼重置操作

基於PostgreSQL密碼重置操作

今天我在用命令列登陸postgresql的時候,忽然忘記密碼了,重試了N次還是不行,然後我就試著上網找解決之道,最後完美的解決了,可是後來我才發現還有個更簡單的方法,該篇部落格用來記錄自己沙雕行為。

工具已登陸

這個就是最簡單的方法,你有工具登陸過,完全可以通過工具來修改(可是我當時完全沒想到這個。。。),我是通過Navicat來連線的,可以直接通過Navicat來修改步驟如下:

1、連線資料庫

2、點選角色

3、選擇角色

4、填入新密碼

5、儲存之後,關閉連線,編輯連線就OK了。

基於PostgreSQL密碼重置操作

基於PostgreSQL密碼重置操作

工具未登入

Windows

1、找到Postgresql安裝目錄下的data,開啟資料夾,找到pg_hba.conf

ps:如果大家找不到,那我推薦一個檔案搜尋神器:Listary,大家可以去試試,賊好用

基於PostgreSQL密碼重置操作

2.用記事本格式開啟,拉到最下面,找到所有md5,全都改為trust

基於PostgreSQL密碼重置操作

3.重啟資料庫,然後連線資料庫,不輸入密碼,直接點連線,此時連線成功

ps:在windows的控制面板中,找到管理工具,然後找到服務:postgresql,點選右鍵,重啟就行了。

基於PostgreSQL密碼重置操作

4.修改密碼

在客戶端修改

alter user postgres with password 'YOUR PASSWORD'

5.或者重新開啟pgAdmin(即資料庫),連線伺服器,不輸入密碼,直接點連線,此時連線成功

6.修改密碼,右鍵登陸角色中要修改密碼的賬戶,開啟屬性,點選定義,輸入密碼,然後確定,此時修改密碼成功。如果重新開啟定義會發現密碼欄裡依舊空白,但此時密碼已是新密碼。

基於PostgreSQL密碼重置操作

7,最後將第一二步中的trust改回md5。重新啟動資料庫,輸入密碼,成功連線伺服器。

Linux

如果是Linux下的話:

1、找到pg_hba.conf路徑

執行

ps ax | grep postgres | grep -v postgres:

得到:

25653 pts/0 S+  0:00 /usr/lib/postgresql/9.3/bin/psql -h 192.168.10.10 -p 5432 -U postgres -W
26679 ?  S  0:00 /usr/lib/postgresql/9.3/bin/postgres -D /var/lib/postgresql/9.3/main -c config_file=/etc/postgresql/9.3/main/postgresql.conf
26924 pts/7 R+  0:00 grep --color=auto postgres

注意結果中有一個config_file,而config_file=/etc/postgresql/9.3/main/就是我們配置所在地

2、無密碼postgres登入

修改pg_hba.confg

#原來是
host all    all    127.0.0.1/32   md5
# IPv6 local connections:
host all    all    ::1/128     md5
#改成
host all    all    127.0.0.1/32   trust
# IPv6 local connections:
host all    all    ::1/128     md5

ps:如果你重啟之後還是登陸不了,也可以將全部md5修改為trust

重啟postgresql服務

sudo service postgresql restart

登入

psql -h 127.0.0.1 -U postgres

3、登入修改密碼

修改密碼

alter user postgres with password 'YOUR PASSWORD'

最後將pg_hba修改回去就好啦,也就是將所有的trust還原為md5。

補充:centos 8 docker安裝postgresql修改密碼,遠端訪問設定

一,修改密碼

1,進入容器

docker exec -it 834f03380346 bash

2,修改密碼

基於PostgreSQL密碼重置操作

二,遠端訪問設定

1,修改配置檔案

基於PostgreSQL密碼重置操作

1)、修改pg_hba.conf檔案

配置使用者的訪問許可權(#開頭的行是註釋內容):  

 # TYPE DATABASE USER CIDR-ADDRESS  METHOD
 # "local" is for Unix domain socket connections only
 local all all    trust
 # IPv4 local connections:
 host all all 127.0.0.1/32  trust
 host all all 0.0.0.1/0 md5
 # IPv6 local connections:
 host all all ::1/128  trust

2)、修改postgresql.conf檔案,將資料庫伺服器的監聽模式修改為監聽所有主機發出的連線請求。

定位到#listen_addresses = 'localhost'。PostgreSQL安裝完成後,預設只接受來自本機localhost的連線請求。

將行開頭都#去掉,將行內容修改為listen_addresses = '*'來允許資料庫伺服器監聽來自任何主機的連線請求!

2,修改入站規則

1),firewall-cmd --zone=public --add-port=5432/tcp --permanent

2),firewall-cmd --reload

3,關閉防火牆

systemctl stop firewalld.service

4,重啟docker

systemctl restart docker.service

5,開啟防火牆

systemctl start firewalld.service

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。