【问题标题】:Create a User for Select Only on Postgresql. Restrict "ALTER TABLE"在 Postgresql 上为 Select Only 创建一个用户。限制“ALTER TABLE”
【发布时间】:2015-09-03 20:03:11
【问题描述】:

我正在使用闲置脚本来创建用户。

CREATE ROLE readonly LOGIN PASSWORD 'thePwd';

-- Existing objects

GRANT CONNECT ON DATABASE the_db TO readonly;

GRANT USAGE ON SCHEMA public TO readonly;

GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;

GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO readonly;

GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO readonly;

创建用户和角色后; “只读”用户具有“选择”权限。没有删除或截断权利。但是“只读”用户拥有正确的“更改表”命令。

如何限制特定用户的“更改表”权限?

有简单的例子吗?

【问题讨论】:

  • 根据显示的命令,它不应该有。
  • 有示例脚本吗?
  • 你在GRANT USAGE ON SCHEMA ...之前连接到the_db了吗?
  • 请在受影响的表上显示有效但不应该有效的命令以及\dp tablename 的输出
  • 我使用了上面的SQL Scripts,一步一步来。 readonly 用户按 SELECT 脚本的预期工作得很好(没有 Drop,没有 Truncate);期待'ALTER TABLE SAMPLE ADD/DROP Column“column_sample”'

标签: postgresql


【解决方案1】:

解决方案在以下脚本中;

create user dummy_user with nosuperuser encrypted password 'dummy_password';

GRANT CONNECT ON DATABASE the_db TO dummy_user;

GRANT USAGE ON SCHEMA public TO dummy_user;

GRANT SELECT ON ALL TABLES IN SCHEMA public TO dummy_user;

GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO dummy_user;

GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO dummy_user;

【讨论】:

  • 在此之后我仍然面临问题 :( 仍然可以运行 alter 命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多