Ubuntu中PostgreSQL權限管理主要通過用戶/角色創建、權限分配及回收實現,核心命令如下:
創建用戶/角色
CREATE USER 用戶名 WITH PASSWORD '密碼' [LOGIN] [CREATEDB] [CREATEROLE]CREATE USER admin WITH PASSWORD '123456' LOGIN CREATEDB;CREATE ROLE 角色名 [CREATEDB] [CREATEROLE]CREATE ROLE readonly NOLOGIN;修改用戶/角色屬性
ALTER USER 用戶名 WITH PASSWORD '新密碼' [SUPERUSER | NOSUPERUSER]ALTER ROLE 角色名 ADD/DROP CREATEDB/CREATEROLE刪除用戶/角色
DROP USER 用戶名; 或 DROP ROLE 角色名;
數據庫級權限
GRANT {ALL PRIVILEGES | SELECT/INSERT/UPDATE/DELETE} ON DATABASE 數據庫名 TO 用戶/角色GRANT ALL PRIVILEGES ON DATABASE testdb TO admin;REVOKE {ALL PRIVILEGES | SELECT/INSERT/UPDATE/DELETE} ON DATABASE 數據庫名 FROM 用戶/角色表/模式級權限
GRANT {SELECT/INSERT/UPDATE/DELETE/TRUNCATE} ON 表名 TO 用戶/角色 [WITH GRANT OPTION]GRANT USAGE ON SCHEMA 模式名 TO 用戶/角色(允許訪問模式)REVOKE {SELECT/INSERT/UPDATE/DELETE/TRUNCATE} ON 表名 FROM 用戶/角色特殊權限
postgres用戶或通過ALTER ROLE賦予(需謹慎)GRANT CONNECT ON DATABASE控制創建可登錄用戶并授權:
sudo -u postgres psql
CREATE USER dev WITH PASSWORD 'dev123' LOGIN CREATEDB;
GRANT ALL PRIVILEGES ON DATABASE devdb TO dev;
\q
創建只讀角色并應用到所有表:
sudo -u postgres psql
CREATE ROLE readonly NOLOGIN;
GRANT CONNECT ON DATABASE testdb TO readonly;
GRANT USAGE ON SCHEMA public TO readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly;
\q
\du\l(查看數據庫所有者及權限)\dp 表名pgAdmin(需安裝)通過界面操作用戶和權限。SUPERUSER權限,優先通過角色繼承控制權限。pg_hba.conf限制IP訪問。以上操作基于PostgreSQL原生權限模型,適用于Ubuntu系統下的數據庫權限管理。