postgresql – 授予用户对所有表的访问权限
我是Postgres的新手并试图迁移我们的
MySQL数据库.在
MySQL中,我可以为低权限用户授予SELECT,UPDATE,INSERT和DELETE权限,并允许这些授权应用于指定数据库中的所有表.我必须在Postgres中遗漏一些东西,因为看起来我必须一次为每个表授予这些权限.每个数据库有许多数据库和数百个表,这似乎是一项艰巨的任务,只是为了起步.此外,一旦数据库处于运行状态,添加表就会频繁发生,除非绝对必要,否则我不希望每次都授予权限.
这怎么做得最好?
首先,您必须能够连接到数据库才能运行查询.这可以通过以下方式实现
REVOKE CONNECT ON DATABASE your_database FROM PUBLIC; GRANT CONNECT ON DATABASE database_name TO user_name; REVOKE是必要的because
如果您真的想将用户限制为DML语句,那么您还需要做更多的事情: REVOKE ALL ON ALL TABLES IN SCHEMA public FROM PUBLIC; GRANT SELECT,INSERT,DELETE ON ALL TABLES IN SCHEMA public TO user_name; 这些假设您将只有一个模式(默认情况下名为“public”). 正如杰克道格拉斯指出的那样,上面只给出了现有表的特权.要在将来的表中实现相同的目标,您必须使用define default privileges: ALTER DEFAULT PRIVILEGES FOR ROLE some_role -- Alternatively "FOR USER" IN SCHEMA public GRANT SELECT,DELETE ON TABLES TO user_name; 这里,some_role是创建表的角色,而user_name是获取权限的角色.定义此项,您必须以some_role或其成员身份登录. 最后,你必须对序列做同样的事情(感谢PlaidFan指出它) – 这里是你需要的USAGE特权. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |