本篇介紹如何在 psql 中使用指令更改 PostgreSQL 使用者帳號的密碼。

更改 PostgreSQL 密碼

若要更改 PostgreSQL 使用者帳號的密碼,最標準的作法就是先使用 psql 連線至 PostgreSQL 伺服器:

# 使用 psql 連線至 PostgreSQL 伺服器
psql

接著再使用 \password 這個 meta 指令來更改自己的密碼。

-- 更改自己的密碼
\password

如果要變更其他使用者的密碼,則要使用 PostgreSQL 管理者的帳號登入:

# 以 PostgreSQL 管理者登入
sudo -u postgres psql

再用 \password 變更指定帳號的密碼:

-- 更改 gtwang 的密碼
\password gtwang

另外一種修改密碼的方式是使用 ALTER USER 這個 SQL 指令:

-- 更改 gtwang 的密碼
ALTER USER gtwang WITH PASSWORD 'new_password';

不過這種方式會讓未加密的密碼儲存於 ~/.psql_history 這個歷史紀錄檔中,所以若用這種方式的話,建議事後要把該紀錄檔刪除。

# 刪除 psql 歷史紀錄檔
rm ~/.psql_history

認證方式

PostgreSQL 對於本機的使用者預設會使用 peer 的方式來認證,也就是說如果透過 Unix-domain socket 連到 PostgreSQL 資料庫,是不需要使用到密碼的,只有使用 TCP/IP socket 連線的時候,才會使用密碼認證。

如果想要更改認證的方式,可以參考 PostgreSQL 的官方文件,修改 pg_hba.conf 這個設定檔。

參考資料:StackOverflow