广告
返回顶部
首页 > 资讯 > 数据库 >浅谈PostgreSQL用户权限
  • 642
分享到

浅谈PostgreSQL用户权限

浅谈PostgreSQL用户权限 2019-12-25 22:12:44 642人浏览 绘本
摘要

问题   经常在PG群里看到有人在问“为什么我对表赋予了权限;但是还是不能访问表” 解析   若你看懂德哥这篇文章PostgreSQL逻辑结构和权限体系介绍;上面对你就不是困扰你的问题   解决这个问题很简单;在解决之前;我们要先

浅谈PostgreSQL用户权限

问题

  经常在PG群里看到有人在问“为什么我对表赋予了权限;但是还是不能访问表”

解析

  若你看懂德哥这篇文章PostgreSQL逻辑结构和权限体系介绍上面对你就不是困扰你的问题

  解决这个问题很简单;在解决之前;我们要先了解PostgreSQL的逻辑结构、以及与用户之间的关系盗用德哥的图;来诠释下逻辑结构;PostgreSQL逻辑结构有4层:实例->数据库->schema->数据库对象

 

  可以看出用户不在PostgreSQL里面;是独立之外的object;这个跟oracle逻辑结构不一致。它不属于某个数据库、或者某个schema。

  若用户不是数据库属主的用户;要访问table1;该怎么办?有三步

  • 首先你把数据库select的权限赋予用户
  • 再则你需要把table1所在的schema的select权限赋予用户
  • 最后你需要把table的select的权限赋予

讨论

  现实验环境

  • 用户:lottu1、lottu2。
  • 数据库:db1
  • schema:lottu1
  • 表:tbl_lottu_01
# 创建用户lottu1
postgres=# create user lottu1;
CREATE ROLE
# 创建用户lottu2
postgres=# create user lottu2;
CREATE ROLE
# 创建数据库db1;属于lottu1
postgres=# create database db1 owner  lottu1;
CREATE DATABASE
# 创建schema、table、并插入记录
postgres=# c db1 lottu1;
You are now connected to database "db1" as user "lottu1".
db1=> create schema lottu1;
CREATE SCHEMA
db1=> create table tbl_lottu_01(id int, info text, reg_time timestamp);
CREATE TABLE
db1=> insert into tbl_lottu_01 select 1,"lottu",now();
INSERT 0 1

  新建的数据库对所有的用户都有连接权限;不管是不是超级用户、属主用户

db1=> c db1 lottu2
You are now connected to database "db1" as user "lottu2".

  针对这种情况;这样是不是很不安全;非主用户为啥可以连数据库;虽然它不可以做任何操作。但是觉得还是没有完全隔离。要实现隔离;我们可以回收数据库权限;只有超级用户、属主用户可以连。

db1=> c db1 postgres
You are now connected to database "db1" as user "postgres".
db1=# revoke CONNECT ON DATABASE db1 from public;
REVOKE
db1=# c db1 postgres
You are now connected to database "db1" as user "postgres".
db1=# c db1 lottu1;
You are now connected to database "db1" as user "lottu1".
db1=> c db1 lottu2;
FATAL:  permission denied for database "db1"
DETaiL:  User does not have CONNECT privilege.
Previous connection kept

  现在实现用户lottu2不能连接数据库db1。现在需求tbl_lottu_01给db2查询。而表tbl_lottu_01属于数据库db1下面schema-lottu1的。

db1=> grant CONNECT ON DATABASE db1 to lottu2;
GRANT
db1=> grant USAGE ON SCHEMA lottu1 to lottu2;
GRANT
db1=> grant select on TABLE tbl_lottu_01 to lottu2;
GRANT
db1=> c db1 lottu2;
You are now connected to database "db1" as user "lottu2".
db1=> select * from lottu1.tbl_lottu_01;
 id | info  |          reg_time          
----+-------+----------------------------
  1 | lottu | 2020-05-19 10:50:15.206569
(1 row)

  经过一层层的赋权;用户lottu2可以select表tbl_lottu_01。若需求将schema-lottu1下所有的表都赋于给lottu2。将上面的修改下即可

grant select on ALL TABLES IN SCHEMA lottu1 to lottu2;
您可能感兴趣的文档:

--结束END--

本文标题: 浅谈PostgreSQL用户权限

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

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

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

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

下载Word文档
猜你喜欢
  • 浅谈PostgreSQL用户权限
    问题   经常在PG群里看到有人在问“为什么我对表赋予了权限;但是还是不能访问表” 解析   若你看懂德哥这篇文章PostgreSQL逻辑结构和权限体系介绍;上面对你就不是困扰你的问题   解决这个问题很简单;在解决之前;我们要先...
    99+
    2019-12-25
    浅谈PostgreSQL用户权限
  • 浅谈MySQL user权限表
    MySQL 在安装时会自动创建一个名为 mysql 的数据库,mysql 数据库中存储的都是用户权限表。用户登录以后,MySQL 会根据这些权限表的内容为每个用户赋予相应的权限。 user 表是 MySQL 中最重要...
    99+
    2022-05-12
    MySQL user权限表 MySQL 权限表 MySQL user表
  • 浅谈python对象数据的读写权限
    面向对象的编程语言在写大型程序的的时候,往往比面向过程的语言用起来更方便,安全。其中原因之一在于:类机制。 类,对众多的数据进行分类,封装,让一个数据对象成为一个完整的个体,贴近现实生活,高度抽象化。但是,...
    99+
    2022-06-04
    浅谈 权限 对象
  • 用户and权限
        每次谈到用户和权限,总感觉没什么去分享和交流的。其实不然,不恰当的去形容好比你是个客户去买房子,你去看200W的房子和1000W的房子那绝对不一样,服务级别享...
    99+
    2022-10-18
  • mongodb用户权限
    mongodb 开启用户认证: mongodb开启用户认证之后,要通过用户名密码的方式登录 现在需要创建一个帐号,该账号需要有grant权限,即:账号管理的授权权限。注意一点,帐号是跟着库走的,所以在指定库...
    99+
    2022-10-18
  • Linux 用户权限
    用户权限 1、访问权限2、chmod 命令3、chown 命令4、chgrp命令5、权限掩码6、lsattr 命令7、chattr命令8、文件的特别权限suid权限set位权限粘滞位权限(Sticky) 9、ACL访问控制列表s...
    99+
    2023-08-24
    linux 服务器 运维
  • mysql用户权限
    读写、只读、DML、DDL 区别 在MySQL中,有不同的用户权限级别,包括读写权限、只读权限、DML权限和DDL权限。下面是它们之间的区别: 读写权限(Read/Write):具有读写权限的用户可...
    99+
    2023-09-05
    mysql 数据库
  • MongoDB用户权限篇
    db.createUser(user,writeConcern)      user这个文档创建关于用户的身份认证和访问信息      wri...
    99+
    2022-10-18
  • Oracle 用户与权限
         create user zhansan identified by 123456; 授予连接数据库的权限      grant connect to zhansan; 授予数据库表的增、删、改、查权限      grant...
    99+
    2017-10-27
    Oracle 用户与权限
  • mongo用户与权限
        开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以对数据库任意操作而且可以远程访问数据库!    在刚安装完毕的时候MongoDB都默认有一个admin数据库(3.0以前...
    99+
    2022-10-18
  • MYSQL用户权限管理
    1.在MySQL中,用户是怎么定义的 #mysql中,定义一个用户是: 用户名@‘主机域‘ #用户名写法: 用户名如果是字符: mysql> create user [email protected]‘10.0.0.1‘; 用户...
    99+
    2015-02-26
    MYSQL用户权限管理 数据库入门 数据库基础教程
  • MySQL修改用户权限
    最近测试中台的存储服务,涉及到MySQL用户操作的命令,记录一下。 查看所有用户 select user from mysql.user; 查看当前登陆用户 select user();   创建用户 C...
    99+
    2016-08-30
    MySQL修改用户权限
  • mysql导出用户权限
    在对MySQL数据库进行迁移的时候,有时候也需要迁移源数据库内的用户与权限。对于这个迁移我们可以从mysql.user表来获取用户的相关权限来生成相应的SQL语句,然后在目标服务器上来执行生成的SQL语...
    99+
    2022-10-18
  • MySQL用户权限操作
    查看当前用户: select user,host from user; 或:   SELECT DISTINCT CONCAT(‘User: ‘‘‘,user,‘‘‘@‘‘‘,host,‘‘‘;‘) AS quer...
    99+
    2016-04-08
    MySQL用户权限操作 数据库入门 数据库基础教程 数据库 mysql
  • mongodb用户权限管理
    1、添加一个管理账号mongo --host 127.0.0.1 --port  27000 use admin db.addUser('admi...
    99+
    2022-10-18
  • MySQL授予用户权限
    使用该命令可以展示出mysql中存在的权限。 show privileges; 给用户授权的方式有 2 种,分别是通过把角色赋予用户给用户授权(mysql8.0的特性) 和 直接给用户授权。用户是数据库的使用者,我们可以通过给用户授予访问数...
    99+
    2023-08-16
    mysql 数据库 java
  • oracle用户查询权限
    Oracle用户查询权限可以通过以下几种方式进行:1. 使用Oracle的系统视图查询用户权限:```sqlSELECT *...
    99+
    2023-08-22
    oracle
  • 浅谈关于如何检测iOS14本地网络权限的一些思路
    前戏 苹果iOS 14针对本地局域做了一些权限限制,详情见链接:https://developer.apple.com/videos/play/wwdc2020/10110/ ww...
    99+
    2022-05-19
    iOS14 本地网络 权限
  • mysql的用户权限如何授权
    下面一起来了解下mysql的用户权限如何授权,相信大家看完肯定会受益匪浅,文字在精不在多,希望mysql的用户权限如何授权这篇短内容是你想要的。 mysql> grant 权限1,权限2,…...
    99+
    2022-10-18
  • Ubuntu—root用户权限设置
    Ubuntu—root用户权限设置 本人ubuntu版本:18.04(其他版本设置步骤相同) Step1. 获得临时root权限 (1)terminal中输入命令: sudo -s (2)输入当前账户密码 Step2. 设置root...
    99+
    2023-08-31
    ubuntu linux 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作