作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 PostgreSQL 中创建一个只读用户。
目的是拥有一个可公开访问的数据浏览器,用户可以在其中编写自定义 SQL 查询。
我这样做是为了创建用户:
CREATE USER MyReadOnlyUser WITH ENCRYPTED PASSWORD 'MY_WEAK_PASSWORD';
GRANT ALL PRIVILEGES ON DATABASE "MY_DB_NAME" to MyReadOnlyUser;
GRANT ALL ON SCHEMA public TO MyReadOnlyUser;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO MyReadOnlyUser;
目的是为用户提供对所有表的 SELECT 访问权限,然后撤销对敏感表的选择访问权限,然后用户可以使用该数据库用户运行自定义查询,而无需我清理输入。
尤其是,他可能不会:
插入、删除、截断、删除表、删除数据库、创建表、创建函数/过程、查看/执行/创建/删除存储过程/函数。等
Sooo - 现在我的问题是:
为什么这个用户可以访问 information_schema ?
它没有被授予对任何 View 的访问权限,也没有被授予对架构 information_schema 的访问权限...
最佳答案
Why does this user have access to information_schema
我认为在 information_schema 上默认将选择权限授予 PUBLIC。
你应该能够做到:
revoke all on all tables in schema information_schema from public;
您可能还需要撤销对 pg_catalog 模式中的 View /表的选择权限。但是我不确定这会破坏什么,例如psql 或其他客户端工具无法访问该信息。
关于sql - 如何在 PostgreSQL 中创建只读用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11203254/
我是一名优秀的程序员,十分优秀!