溫馨提示×

Debian PostgreSQL權限設置詳解

小樊
41
2025-08-14 08:35:48
欄目: 云計算

Debian PostgreSQL權限設置基于角色(用戶)和權限分級管理,核心操作如下:

一、用戶與角色管理

  • 創建用戶/角色
    CREATE USER 用戶名 WITH PASSWORD '密碼';  -- 創建可登錄用戶  
    CREATE ROLE 角色名 WITH LOGIN PASSWORD '密碼';  -- 創建帶權限的角色  
    
  • 刪除用戶/角色
    DROP USER 用戶名;  
    DROP ROLE 角色名;  
    
  • 修改密碼
    ALTER USER 用戶名 WITH PASSWORD '新密碼';  
    

二、權限分配

  • 數據庫級別
    GRANT ALL PRIVILEGES ON DATABASE 數據庫名 TO 用戶名/角色名;  -- 授予所有權限  
    REVOKE ALL PRIVILEGES ON DATABASE 數據庫名 FROM 用戶名/角色名;  -- 撤銷權限  
    
  • 表/視圖級別
    GRANT SELECT, INSERT, UPDATE, DELETE ON 表名 TO 用戶名/角色名;  -- 授予增刪改查權限  
    GRANT SELECT(列名1, 列名2) ON 表名 TO 用戶名/角色名;  -- 授予特定列權限  
    
  • 模式(Schema)級別
    GRANT USAGE ON SCHEMA 公共模式名 TO 用戶名/角色名;  -- 允許訪問模式  
    GRANT CREATE ON SCHEMA 公共模式名 TO 用戶名/角色名;  -- 允許創建對象  
    
  • 序列級別
    GRANT SELECT, UPDATE ON SEQUENCE 序列名 TO 用戶名/角色名;  -- 控制序列訪問  
    
  • 函數級別
    GRANT EXECUTE ON FUNCTION 函數名(參數類型) TO 用戶名/角色名;  
    

三、高級權限管理

  • 角色繼承
    CREATE ROLE 父角色名 WITH LOGIN PASSWORD '密碼' INHERIT;  
    CREATE ROLE 子角色名 WITH LOGIN PASSWORD '密碼' INHERIT;  
    GRANT 父角色名 TO 子角色名;  -- 子角色繼承父角色權限  
    
  • 默認權限
    ALTER DEFAULT PRIVILEGES IN SCHEMA 公共模式名  
    GRANT SELECT ON TABLES TO 用戶名/角色名;  -- 新建表自動繼承SELECT權限  
    

四、權限查看與維護

  • 查看用戶權限
    \du  -- 查看所有用戶及角色  
    \dp 表名  -- 查看表級權限  
    SELECT * FROM information_schema.role_table_grants WHERE grantee = '用戶名';  -- 詳細權限明細  
    
  • 權限回收
    REVOKE 權限類型 ON 對象 FROM 用戶名/角色名;  -- 撤銷已授予權限  
    

五、連接控制(pg_hba.conf)

編輯 /etc/postgresql/{版本}/main/pg_hba.conf,配置客戶端訪問規則,例如:

# 允許本地所有用戶通過密碼認證訪問所有數據庫  
host    all             all             127.0.0.1/32            md5  
# 允許特定IP段訪問指定數據庫  
host    mydb            myuser          192.168.1.0/24          md5  

修改后需重啟服務生效:

sudo systemctl restart postgresql  

關鍵原則

  • 最小權限原則:僅授予用戶完成任務所需的最低權限,避免過度授權。
  • 角色復用:通過角色繼承和權限分組,簡化權限管理復雜度。
  • 安全審計:定期通過\duinformation_schema查詢權限分配情況,確保合規。

以上操作需在postgres用戶或具有超級權限的角色下執行,涉及生產環境建議提前備份數據庫。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女