因此,这应该很容易,但是我无法弄清楚。我正在使用postgres 9.6,我有一个postgres用户和一个数据库。我想赋予该用户仅在给定数据库上执行任何操作的能力。我尝试了以下不起作用的命令:
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;
ALTER DATABASE mydatabase OWNER TO myuser;
该文档似乎很清楚,所有特权都应包括更新,插入等,但是当我登录时,该用户实际上无法执行任何操作。我也看过以下示例:
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO user_name;
但是我不确定如何将其限制为一个数据库?任何帮助,我们将不胜感激。
在PostgreSQL中,允许用户使用一条语句访问数据库中所有对象的唯一方法是赋予他们超级用户特权。但是您不应该这样做。
分阶段进行:
访问数据库:
默认情况下,每个人都可以访问所有数据库,您可以在中进行配置pg_hba.conf
。如果已删除PUBLIC
数据库的权限,请使用
GRANT ALL ON DATABASE ... TO ...;
访问架构:
对于所有模式,运行
GRANT ALL ON SCHEMA ... TO ...;
访问表:
对于所有模式,运行
GRANT ALL ON ALL TABLES IN SCHEMA ... TO ...;
访问序列:
对于所有架构,
GRANT ALL ON ALL SEQUENCES IN SCHEMA ... TO ...;
访问功能:
默认情况下,使用EXECUTE
特权创建函数PUBLIC
。如果已删除,请授予访问权限
GRANT ALL ON ALL FUNCTIONS IN SCHEMA ... TO ...;
还有其他不常用的东西,例如大对象或外部服务器。您还必须授予这些特权。GRANT
有关详细信息,请参阅文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句