iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >PostgreSQL USAGE和SELECT权限实例代码分析
  • 318
分享到

PostgreSQL USAGE和SELECT权限实例代码分析

2023-07-06 01:07:54 318人浏览 泡泡鱼
摘要

今天小编给大家分享一下postgresql USAGE和SELECT权限实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下

今天小编给大家分享一下postgresql USAGE和SELECT权限实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

起因

 在学习PostgREST的第一个起步案例 教程 0 - 让它运行起来 的时候碰到了下面几条语句:

CREATE ROLE WEB_anon NOLOGIN;GRANT USAGE ON SCHEMA api TO web_anon;GRANT SELECT ON api.todos TO web_anon;

因为不太懂Postgsql,就行了了研究,研究结果如下:

第一个语句:

CREATE ROLE web_anon NOLOGIN;

这条命令创建了一个名为 web_anon 的新角色,并通过使用 NOLOGIN 选项指定该角色不能直接登录到数据库。通常,这是为了给不需要直接访问数据库的应用或服务授予权限。

第二个和第三个语句:

GRANT USAGE ON SCHEMA api TO web_anon;GRANT SELECT ON api.todos TO web_anon;

这两条命令分别将对 schema api 的使用权(USAGE)和对表 api.todos 的查看权(SELECT)授予 web_anon 角色。这意味着任何具有 web_anon 角色的用户或连接将能够查询 api.todos 表中的数据。

分析

如果不给USAGE,只给SELECT 会有什么效果
如果只授予角色(例如 web_anon)对表(如 api.todos)的 SELECT 权限但没有授予 SCHEMA(如 api)的 USAGE 权限,那么该角色将只能查询与授权的表相关的数据。

在这种情况下,web_anon 角色将仍然能够执行 SELECT 查询访问 api.todos 表中的数据,因为你已经授予了该角色针对该表的 SELECT 权限。然而,如果 schema api 包含其他对象(如数据类型、操作符、函数等),web_anon 角色将无法使用这些对象,因为没有授予 SCHEMA 的 USAGE 权限。

简而言之,没有 SCHEMA 的 USAGE 权限,角色将无法使用此 SCHEMA 中的其他数据库对象,但仍然可以运行 SELECT 查询以访问已授权表中的数据。需要注意的是,这可能会导致某些查询和操作失败,特别是当查询涉及到 SCHEMA 中其他对象时。

授权USAGE之后,还需要授权select 吗? 如果不授权select能进行查询数据吗?
即使已经授予角色 SCHEMA 的 USAGE 权限,你仍然需要为某个表(例如:api.todos)单独授权 SELECT 权限。USAGE 权限只让角色能够访问 SCHEMA 中的数据类型、操作符、函数等其他数据库对象,但是不包含对 SCHEMA 中的表的访问权。

如果没有为表(例如:api.todos)授权 SELECT 权限,即使已授权 SCHEMA 的 USAGE 权限,角色仍然无法读取该表中的数据。为了允许一个角色执行 SELECT 查询并获取某个表中的数据,你需要为该角色分别授权 SCHEMA 的 USAGE 权限和表的 SELECT 权限。

只有USAGE没有SELECT的例子
为了更好地理解只有 SCHEMA 的 USAGE 权限的情况,我们首先需要了解 PostgreSQL schema。一个 schema 是一个命名空间,它可以包含多个数据库对象,如表、视图、数据类型、函数等。在这个例子中,假设我们有一个名为 api 的 schema 和一个名为 api.todos 的表。我们还有一个自定义数据类型和一个函数。

创建自定义数据类型:

CREATE TYPE api.priority_level AS ENUM ('Low', 'Medium', 'High');

创建一个使用自定义数据类型的表:

CREATE TABLE api.todos_with_priority (    id SERIAL PRIMARY KEY,    task VARCHAR(255) NOT NULL,    priority api.priority_level NOT NULL);

创建一个使用自定义数据类型的函数:

CREATE FUNCTION api.get_priority_as_text(p api.priority_level) RETURNS text    LANGUAGE sql    AS $$ SELECT 'Priority: ' || p::text; $$;

如果我们创建一个名为 web_anon 的角色并仅授权 SCHEMA 的 USAGE 权限:

CREATE ROLE web_anon NOLOGIN;GRANT USAGE ON SCHEMA api TO web_anon;

在这种情况下,web_anon 角色将可以使用 api schema 中的自定义数据类型(例如 api.priority_level)以及自定义函数(例如 api.get_priority_as_text),但由于缺少 SELECT 权限,它无法查询 api.todos_with_priority 表。

如果将 web_anon 角色分配给另一个用户或角色并尝试执行以下查询:

SELECT id, task, api.get_priority_as_text(priority)FROM api.todos_with_priority;

这个查询将失败,因为没有授予 SELECT 权限。

为了让 web_anon 角色能查询 api.todos_with_priority 表,我们需要给它授予对该表的 SELECT 权限:

GRANT SELECT ON api.todos_with_priority TO web_anon;

以上就是“PostgreSQL USAGE和SELECT权限实例代码分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: PostgreSQL USAGE和SELECT权限实例代码分析

本文链接: https://www.lsjlt.com/news/357153.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PostgreSQL USAGE和SELECT权限实例代码分析
    今天小编给大家分享一下PostgreSQL USAGE和SELECT权限实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
    99+
    2023-07-06
  • PostgreSQL USAGE和SELECT权限案例深入分析
    目录起因分析总结起因 因为项目需求,需要学习PostgreSQL,本人之前学习过mysql,临时快速上手,尽快的去学习项目需要PostgREST, 在学习PostgREST的第一个起步案例 教程 0 - 让它运行起来 的...
    99+
    2023-04-12
    PostgreSQL USAGE权限 PostgreSQL SELECT权限
  • PostgreSQLUSAGE和SELECT权限案例深入分析
    目录起因分析总结起因 因为项目需求,需要学习PostgreSQL,本人之前学习过MYSQL,临时快速上手,尽快的去学习项目需要PostgREST, 在学习PostgREST的第一个起...
    99+
    2023-05-15
    PostgreSQL USAGE权限 PostgreSQL SELECT权限
  • PHP和Java代码实例分析
    这篇文章主要介绍“PHP和Java代码实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP和Java代码实例分析”文章能帮助大家解决问题。命名案例1function getGood...
    99+
    2023-06-16
  • mysql权限和索引的示例分析
    这篇文章将为大家详细讲解有关mysql权限和索引的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql权限和索引mysql的最高用户是root,我们可以在数据...
    99+
    2024-04-02
  • mysql用户和权限的示例分析
    小编给大家分享一下mysql用户和权限的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 用...
    99+
    2024-04-02
  • php实例代码分析
    本文小编为大家详细介绍“php实例代码分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“php实例代码分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。常做的和常想的事情晦涩的if条件1)对于||的处理&nbs...
    99+
    2023-06-17
  • Python实例代码分析
    这篇“Python实例代码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python实例代码分析”文章吧。1.交换两个变...
    99+
    2023-06-27
  • mysql中账户和权限的示例分析
    小编给大家分享一下mysql中账户和权限的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!当客户端连接 MySQL 服务器时,必须提供有效的身份认证,例如用户名和密码。当用户执行任何...
    99+
    2024-04-02
  • Oracle中定义者权限和调用者权限的示例分析
    这篇文章给大家分享的是有关Oracle中定义者权限和调用者权限的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。定义者权限:定义者权限指使用它所有者的权限,而不是当前用户来...
    99+
    2024-04-02
  • Promise实例代码分析
    这篇文章主要介绍“Promise实例代码分析”,在日常操作中,相信很多人在Promise实例代码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Promise实例代码分析”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-05
  • css实例代码分析
    今天小编给大家分享一下css实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。 ...
    99+
    2024-04-02
  • HTML实例代码分析
    这篇文章主要讲解了“HTML实例代码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTML实例代码分析”吧!   CodePage:可读/可写。整型。...
    99+
    2024-04-02
  • css代码实例分析
    这篇文章主要介绍“css代码实例分析”,在日常操作中,相信很多人在css代码实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css代码实例分析”的疑惑有所帮助!接下来,...
    99+
    2024-04-02
  • java代码实例分析
    这篇文章主要介绍“java代码实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java代码实例分析”文章能帮助大家解决问题。一、几个坑爹代码的目录这样使用 StringBuffer 的方法有什...
    99+
    2023-06-16
  • SQL权限设置的问题实例分析
    这篇文章主要讲解了“SQL权限设置的问题实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL权限设置的问题实例分析”吧! 第一个是对于一个用户的操...
    99+
    2024-04-02
  • CentOS文件和目录权限的示例分析
    这篇文章将为大家详细讲解有关CentOS文件和目录权限的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。环境创建俩个用户user1和user2[root@localhost ~]#&nbs...
    99+
    2023-06-10
  • mysql中引擎、Explain和权限的示例分析
    小编给大家分享一下mysql中引擎、Explain和权限的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!引擎简介Inno...
    99+
    2024-04-02
  • 后台管理系统的权限及vue处理权限实例分析
    这篇文章主要介绍了后台管理系统的权限及vue处理权限实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇后台管理系统的权限及vue处理权限实例分析文章都会有所收获,下面我们一...
    99+
    2024-04-02
  • div css实例代码分析
    这篇文章主要介绍了div css实例代码分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇div css实例代码分析文章都会有所收获,下面我们一起来看看吧。关于“div css...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作