介紹如何在 PostgreSQL 資料庫中增加管理者帳號,或授予使用者資料庫管理權限。
PostgreSQL 資料庫的管理者帳號實際上就是將普通帳號授予管理者權限,若要列出目前 PostgreSQL 資料庫中所有的使用者,可以執行:
-- 列出既有使用者 SELECT usename FROM pg_user;
usename ---------- postgres (1 row)
若要新增使用者,可以使用 CREATE USER
指令:
-- 建立新使用者 officeguide CREATE USER officeguide;
CREATE ROLE
建立新的使用者之後,再次確認:
-- 列出既有使用者 SELECT usename FROM pg_user;
usename ------------- postgres officeguide (2 rows)
若需要查詢所有使用者帳號的權限,可以使用 \du
指令:
-- 查詢帳號權限 \du
List of roles Role name | Attributes | Member of ------------+------------------------------------------------------------+----------- officegide | | {} postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
若要授予一般使用者帳號管理者權限,可以使用 ALTER USER
新增 SUPERUSER
權限:
-- 授予 officeguide 帳號管理者權限 ALTER USER officeguide WITH SUPERUSER;
ALTER ROLE
授予管理者權限之後,再次確認:
-- 查詢帳號權限 \du
List of roles Role name | Attributes | Member of -------------+------------------------------------------------------------+----------- officeguide | Superuser | {} postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
若要撤銷指定使用者的管理者權限,可以使用 ALTER USER
配合 NOSUPERUSER
:
-- 撤銷 officeguide 帳號管理者權限 ALTER USER officeguide WITH NOSUPERUSER;
ALTER ROLE
撤銷管理者權限後,再次確認:
-- 查詢帳號權限 \du
List of roles Role name | Attributes | Member of -------------+------------------------------------------------------------+----------- officeguide | | {} postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
若要刪除指定使用者帳號,可以使用 DROP USER
指令:
-- 刪除 officeguide 帳號 DROP USER officeguide;
DROP ROLE
參考資料:CHARTIO