如何重置postgresql用戶密碼
場景:
打算新建一個postgresql的數據庫 FooDB 並把所有者權限賦給用戶 foo
正常操作應該是:先創建用戶foo,再用foo身份創建數據庫 FooDB
操作
1、先創建用戶 foo,在postgresql的bin目錄下執行命令
createuser.exe -s -P foo -U postgres
-s 表示新建 foo用戶是 superuser
-P 表示執行命令后,顯示輸入密碼的過程
-U postgres 表示,使用超級用戶postgres的身份連接數據庫服務器,並創建新用戶foo
執行時候要求輸入postgres用戶的密碼,結果發現密碼早忘了,所以需要重新設置postgres用戶的密碼
解決方法:
1、關閉數據庫服務
2、進入數據庫的工作空間目錄 (如果是建庫是沒有另外指定,應該就是postgresql安裝目錄下的 data 目錄)
3、編輯修改文件 pg_hba.conf, 把連接權限設置的 md5 加密方式 改成 trust
以我的為例,原本設置是
1. # TYPE DATABASE USER CIDR-ADDRESS METHOD
2. # IPv4 local connections:
3. host all all 127.0.0.1/32 md5
修改為
1. # TYPE DATABASE USER CIDR-ADDRESS METHOD
2. # IPv4 local connections:
3. host all all 127.0.0.1/32 trust
4、從新啟動postgresql數據庫服務
5、可以不用密碼就能用postgres用戶登陸,然后執行修改用戶密碼的操作
alter user postgres with password 'foobar';
6、修改 pg_hba.conf 文件,改回到 md5 方式,再重啟數據庫服務就ok了
7、再執行建用戶,和建庫操作
createuser.exe -s -P foo -U postgres
createdb.exe --encoding=UTF8 --owner=foo --template=template_postgis -Ufoo
參數:
--encoding=UTF8 設置數據庫的字符集
--owner=foo 設置數據庫的所有者
--tmplate=template_postgis 設置建庫的模板,該模板支持空間數據操作
--Ufoo 用foo用戶身份建立數據庫