如何为PostgreSQL用户授权排除特定前缀表的访问权限?
配置数据库用户权限(排除指定前缀表)
假设你使用的是MySQL数据库,以下是实现需求的具体步骤:
创建目标用户
先创建需要的用户,指定允许访问的主机(localhost代表仅本地访问,若需远程访问可替换为%,注意安全):CREATE USER 'limited_user'@'localhost' IDENTIFIED BY 'your_secure_password';授予基础权限并排除指定表
先给用户授予something数据库下所有表的权限(可根据实际需求调整权限类型,比如仅需查询就用SELECT),再收回所有directus_前缀表的权限:-- 授予数据库内所有表的全权限(SELECT/INSERT/UPDATE/DELETE可按需增减) GRANT SELECT, INSERT, UPDATE, DELETE ON `something`.`%` TO 'limited_user'@'localhost'; -- 收回directus前缀表的所有权限 REVOKE ALL PRIVILEGES ON `something`.`directus_%` FROM 'limited_user'@'localhost';刷新权限生效
执行刷新命令让权限配置立即生效:FLUSH PRIVILEGES;
补充说明
- 这种方式的优势是:后续新增的非
directus_前缀表会自动对该用户开放权限,新增的directus_前缀表则自动被限制访问,无需重复配置。 - 如果你只需要给用户查询权限,把
GRANT语句里的权限改成SELECT即可。
内容的提问来源于stack exchange,提问作者Ali Shabani
相关产品推荐
相关产品推荐

