PostgreSQL資料庫中,假如你忘記了postgres賬號的密碼或者由于作業交接問題,等交接到你手頭的時候,沒有postgres賬號密碼,那怎么辦呢?其實不用慌,像MySQL、SQL Server等資料庫一樣,只要你擁有作業系統權限,修改postgres超級賬號的密碼也非常方便簡單,下面測驗環境為CentOS Linux release 7.2.1511 (Core), PostgreSQL資料庫版本為9.5,其它不同版本的操作其實是一樣的,只是略有細微差別,
1:定位pg_hba.conf檔案位置
首先找到pg_hba.conf檔案的位置,具體有下面這些方法:
方法1:locate定位pg_hba.conf檔案的位置
$ locate pg_hba.conf
/usr/pgsql-9.5/share/pg_hba.conf.sample
/var/lib/pgsql/9.5/data/pg_hba.conf
方法2:find命令查找,
$ find / -name "pg_hba.conf" 2>%1 | grep -v "Permission denied"
/var/lib/pgsql/9.5/data/pg_hba.conf
2:修改pg_hba.conf組態檔
修改pg_hba.conf前最好做一個備份,這是一個良好的習慣,避免回滾的時候,你能輕松回撤所有操作,
#cp /var/lib/pgsql/9.5/data/pg_hba.conf /var/lib/pgsql/9.5/data/pg_hba.conf.20210125
在pg_hba.conf中找到類似下面這樣的地方:
# TYPE DATABASE USER ADDRESS METHOD# "local" is for Unix domain socket connections onlylocal all all md5# IPv4 local connections:host all all 127.0.0.1/32 md5
# IPv6 local connections:host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the# replication privilege.#local replication postgres peer#host replication postgres 127.0.0.1/32 ident#host replication postgres ::1/128 ident# Allow access from all host to connect to this UAT serverhost all all 0.0.0.0/0 md5
關于修改pg_hba.conf,如果你打算以socket方式在本機登錄資料庫,那么只需修改local這條記錄,將pg_hba.conf中的這個選項的的值從md5修改為trust
修改前
# "local" is for Unix domain socket connections onlylocal all all md5修改后
# "local" is for Unix domain socket connections onlylocal all all trust
trust表示允許可信的本地連接,此時連接資料庫不用輸入密碼,
小知識:
TYPE表示主機型別,它的取值有下面這些:
local :表示是unix-domain的socket連接
host :表示TCP/IP socket
hostssl: 表示SSL加密的TCP/IP socket
如果你打算以TCP/IP方式訪問資料庫,即psql -h127.0.0.1 -Upostgres這樣的方式,那么必須修改host的配置,具體如下所示:
修改前:
# IPv4 local connections:host all all 127.0.0.1/32 md5
修改后:
# IPv4 local connections:host all all 127.0.0.1/32 trust
3: 重啟PostgreSQL服務
重啟PostgreSQL服務的方法很多,這里不做過多介紹,選擇你常用的方式即可,
# service postgresql-9.5 stopRedirecting to /bin/systemctl stop postgresql-9.5.service
# service postgresql-9.5 startRedirecting to /bin/systemctl start postgresql-9.5.service
# service postgresql-9.5 statusRedirecting to /bin/systemctl status postgresql-9.5.service
4:重置賬號postgres的密碼
使用psql無密碼登錄,修改用戶postgres的密碼
alter user postgres with password '新的密碼';
方式1:
#psql -U postgres方式2:
#psql
關于兩者,如果ssh是用postgres用戶連接服務器的話,那么直接psql即可,如果是root用戶連接服務器的話,必須用psql -U postgres
-bash-4.2$ psql
psql (9.5.6)
Type "help" for help.
postgres=# alter user postgres with password 'xxxxxxxx';ALTER ROLE
5:恢復pg_hba.conf組態檔的修改
6:重啟PostgreSQL服務
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/252559.html
標籤:PostgreSQL
上一篇:詳解一條 SQL 的執行程序
