首页 > 数据库 >PGSQL 数据库用户管理示例

PGSQL 数据库用户管理示例

时间:2023-02-14 10:23:17浏览次数:134  
标签:示例 数据库 grant PGSQL user test 权限 schema

前提:利用postgres用户登录,并用创建测试数据库

 create database test

 

1、新建用户 new_user,并将密码设为 1234567

create user new_user password '123456'

2、授予用户new_user对test数据库的连接权限;

grant connect on database test to new_user;

3、授予new_user对数据库 test 中的所有权限;

grant all PRIVILEGES on database test to new_user;

4、更改new_user密码

alter user new_user password '654321';

参考文章:

(89条消息) PostgreSQL数据库系列之十二:权限管理_Eric.zhong的博客-CSDN博客_pg数据库切换超级管理员

 

权限管理概述
当初始化PG数据库后,它自动有会有一个超级用户,通常这个超级用户的名称与初始化PG数据库时的操作系统用户名相同。比如你在Windows操作系统里以Administrator管理员部署,那么PG数据库也将会有一个Administrator(※ 大小写严格区分)超级用户作为超级管理员。

通常来说,DBA不会将数据库超级管理员提供给开发人员部署到业务系统配置文件,而是额外创建相应权限与用途的账号给开发人员。此时就需要对数据库权限管理有充分的认识才可以避免删库跑路的问题。

权限管理类型
PostgreSQL数据库中的用户中有两种权限:

角色/用户在CREATE USER创建时赋予权限,ALTER USER方式变更权限;

SUPERUSER => 数据库的超级用户拥有该数据库的所有权限
CREATEDB => 角色要想创建数据库,必须明确赋予创建数据库的属性(包含变更与删除权限)
CREATEROLE => 一个角色要想创建更多角色,必须明确给予创建角色的属性
LOGIN => 登录的权限
REPLICATION => 专门用于执行复制动作的权限
角色/用户在GRANT方式赋予权限,REVOKE方式撤销权限;

SELECT => 允许从指定表,视图或序列的任何列或列出的特定列进行SELECT。
INSERT => 允许将新行INSERT到指定的表中。如果指定特定列,那么其它列将以默认值写入。
UPDATE => 允许更新指定表的任何列或列出的特定列,需要SELECT权限。
DELETE => 允许删除指定表中的行,需要SELECT权限。
TRUNCATE => 允许在指定的表上创建触发器。
REFERENCES => 允许创建引用指定表或表的指定列的外键约束。
TRIGGER => 允许在指定的表上创建触发器。
CREATE => 对于数据库,允许在数据库中创建新的schema、table、index。
CONNECT => 允许用户连接到指定的数据库。在连接启动时检查此权限。
TEMPORARY => 允许在使用指定数据库时创建临时表。
EXECUTE => 允许使用指定的函数或过程以及在函数。
USAGE => 对于schema,允许访问指定模式中包含的对象;对于sequence,允许使用currval和nextval函数。对于类型和域,允许在创建表,函数和其他模式对象时使用类型或域。
ALL PRIVILEGES => 一次授予所有可用权限。
权限管理命令参考
1. 用户创建与变更密码
# 创建复制用户
CREATE USER ericzhong REPLICATION LOGIN ENCRYPTED PASSWORD 'ericzhong';

# 变更用户密码
ALTER USER ericzhong WITH ENCRYPTED password '123456';
1
2
3
4
5
2. 表对象权限授权
#单表读写授权:授权test账号可以访问schema为test的t1表
grant select,insert,update,delete on test.t1 to test;
#所有表授权:授权test账号可以访问schema为test的所有表
grant select,insert,update,delete on all tables in schema test to test;
1
2
3
4
3. 表对象指定列权限授权
#列授权,授权指定列(test schema下的t1表的name列)的更新权限给test用户
grant update (name) on test.t1 to test;
#指定列授不同权限,test schema下的t1表,查看更新name、id字段,插入name字段
grant select (name,id),update (name,id),insert(name) on test.t1 to test;
1
2
3
4
4. 序列属性授权
#序列(自增键)属性授权,指定test schema下的seq_id_seq 给test用户
grant select,update on sequence test.seq_id_seq to test;
#序列(自增键)属性授权,给用户test授权test schema下的所有序列
grant select,update on all sequences in schema test to test;
1
2
3
4
5. 只读账号授权
# 超级用户登录数据库
create user ro_user password 'readonly';

# 设置Postgres数据库为只读的transaction
alter user ro_user set default_transaction_read_only=on;

# 赋予用户权限,查看public模式下所有表:(新建表也会有只读权限)
grant usage on schema public to ro_user;
alter default privileges in schema public grant select on tables to ro_user;

# 赋予用户连接数据库权限
grant connect on database zhong to ro_user;
# 切换到指定数据库
\c zhong
# 赋予用户表、序列查看权限
grant usage on schema public to ro_user;
grant select on all sequences in schema public to ro_user;
grant select on all tables in schema public to ro_user;
————————————————
版权声明:本文为CSDN博主「Eric.zhong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38623994/article/details/106651022

标签:示例,数据库,grant,PGSQL,user,test,权限,schema
From: https://www.cnblogs.com/lrzy/p/17118779.html

相关文章

  • opensips将配置文件中的数据库密码加密
    本来没想着给数据库密码加密,结果当时用的数据库密码中有个@符号,opensips在解析数据库连接串的时候,会将@字符后的数据认为是数据库地址,导致一直连接失败。解决方法:1、配置......
  • 学会下文,安装数据库不再求人
    想要数据存储必须要有数据库为支撑。在项目运行的时候也是要提前安装好并导入表结构和数据。通俗点来说,学会了万事不求人。这里就整理了一份关于Windows和Linux系统下安装......
  • (数据库系统概论|王珊)第三章关系数据库标准语言SQL-第零节:MYSQL环境安装和表的建立以及
    pdf下载:密码7281专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解目录一:注意事项二:MYSQL环境(1)下载(2)安装(3)MYSQL可视......
  • 如何处理缓存跟数据库数据不一致?
    本文主要参考沈剑大佬的多篇缓存相关博文和博文的精彩评论,以及数位网友的优秀分享,文末是完整参考,其中第二章节直接节选自沈剑大佬的文章。1、单体数据库,缓存不一致问题1.......
  • 数据库题(三)——查询近30天活跃用户数
    题目下面这张表是用户在社交网站的活动记录。Activitytable:+---------+------------+---------------+---------------+|user_id|session_id|activity_date|a......
  • 数据库错题集2
    汉字比较是字母的比较bai>ai因为b>aselectiif(N’百’>N’爱’,1,0)=>1selectiif(N’才’>N’爱’,1,0).=>0......
  • 数据库错题集
    SQL语言是​​非过程化​​的语言,易学习在关系DB中,任何二元关系模式的最高范式必定是BCNF数据库管理系统DBMS是​​一个软件​​​​关系代数运算​​​是以​​集合运......
  • 远程连接腾讯云服务器上的数据库
    环境Serverversion:8.0.23-0ubuntu0.20.04.1(Ubuntu)Ubuntu20在已有root用户情况下需要处理开放3306端口允许非本地连接1.1.5​​腾讯云安全组配置直达​​点击......
  • 数据库存储过程
    数据库存储过程存储过程的提出:在修改A表的一条数据时,需要关联修改其它表的数据,不同的业务操作,体现的是与数据库的交互,假设关联的业务越复杂,需要与数据库进行输入输出的次......
  • 数据库导出excel信息(mysql数据库已经验证)
    导出表信息1SELECT2TABLE_NAME表名,3REPLACE(4REPLACE(TABLE_COMMENT,CHAR(10),''),5CHAR(13),6','7......