postgreSQL 用户、角色、权限、数据库的简单使用

PostgreSQL用户与数据库创建:从核心概念到生产级权限管理实战 数据库权限管理是保障数据安全与系统稳定的基石,其核心在于理解并实施最小权限原则。PostgreSQL通过用户、角色、数据库、模式等多层级的权限体系,实现了精细化的访问控制。用户本质上是具备登录权限的角色,而角色作为权限集合,通过继承机制实现了灵活的权限分组与复用。这一设计不仅提升了管理效率,更在安全层面防止了权限过度扩散。在实际的工程实践中,合理的权限规划能有效隔离应用数据,避免误操作与安全风险,尤其适用于微服务架构、多租户SaaS平台及数据中台等需要对数据访问进行严格管控的场景。本文以一次紧急的权限隔离需 阅读详情

最近公司使用postgreSQL数据库进行应用开发,对用户、权限和数据库的使用有些和mysql不一致的地方,记下来供以后参考。

用户和角色

postgreSQL的用户和角色基本没有什么差别,只不过用户是默认有数据库的login权限的,而角色没有。
角色可以被当做一个用户、或者一个组。

摘取postgreSQL手册创建用户大纲:

CREATE ROLE name [ [ WITH ] option [ … ] ]

where option可以是:

  SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| CREATEUSER | NOCREATEUSER
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| IN GROUP role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]
| USER role_name [, ...]
| SYSID uid
  • 用户登陆

    psql -U username
    password:
    如下图:
    这里写图片描述

  • 创建用户

    create user username;

  • 删除用户

    drop user username;

  • 创建一个有密码的用户

    create user username with password ‘password’;

  • 创建角色

    create role rolename;

角色用户此时是没有登陆权限的,可以登陆验证一下.

  • 删除角色

    drop role rolename;

  • 创建一个有登陆权限的角色

    create role rolename login;

  • 创建一个有密码的登陆角色

    create role rolename login password ‘password’;

当然也可以使用shell命令进行用户创建,这里就不介绍了。

数据库

要创建一个数据库那你必须是管理员或者有创建数据库权限。
创建数据库的时候默认使用template数据库模板,当然也可以使用template name命令指定模板。下面有例子。

摘取postgreSQL手册大纲:

CREATE DATABASE name
[ [ WITH ] [ OWNER [=] user_name ]
       [ TEMPLATE [=] template ]
       [ ENCODING [=] encoding ]
       [ LC_COLLATE [=] lc_collate ]
       [ LC_CTYPE [=] lc_ctype ]
       [ TABLESPACE [=] tablespace_name ]
       [ ALLOW_CONNECTIONS [=] allowconn ]
       [ CONNECTION LIMIT [=] connlimit ] ]
       [ IS_TEMPLATE [=] istemplate ]
  • 创建一个数据库

    create database databasename;

  • 按模板数据库创建一个数据库

    create database databasename template templatename; //当前登陆用户必须对模板数据库有连接权限

  • 删除一个数据库

    drop database databasename;

  • 创建一个数据库同时指定它的所有者

    create database databasename owner username template templatename;

  • 创建一个数据库,然后只允许管理员和数据库所有者才能连接

    create database databasename owner username; //创建一个数据库
    revoke all on database databasename from public; //回收其他用户的连接权限
    grant connect on database databasename to username; //给用户赋予数据库连接权限

因为数据库创建的时候是默认将连接权限授予public角色,所以新创建的数据库是所有用户都能看到的,我们可以在创建完数据库之后对连接权限进行回收,以此达到数据库私有。

授权GRANT

摘取postgreSQL数据库手册大纲:

GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
    [, ...] | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...]
         | ALL TABLES IN SCHEMA schema_name [, ...] }
    TO role_specification [, ...] [ WITH GRANT OPTION ]

GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
    [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
    ON [ TABLE ] table_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]

GRANT { { USAGE | SELECT | UPDATE }
    [, ...] | ALL [ PRIVILEGES ] }
    ON { SEQUENCE sequence_name [, ...]
         | ALL SEQUENCES IN SCHEMA schema_name [, ...] }
    TO role_specification [, ...] [ WITH GRANT OPTION ]

GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
    ON DATABASE database_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON DOMAIN domain_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN DATA WRAPPER fdw_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN SERVER server_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON { FUNCTION function_name ( [ [ argmode ] [ arg_name ] arg_type [, ...] ] ) [, ...]
         | ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
    TO role_specification [, ...] [ WITH GRANT OPTION ]

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON LANGUAGE lang_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]

GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
    ON LARGE OBJECT loid [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]

GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
    ON SCHEMA schema_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]

GRANT { CREATE | ALL [ PRIVILEGES ] }
    ON TABLESPACE tablespace_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON TYPE type_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]

这里的role_specification可以是:

    [ GROUP ] role_name
  | PUBLIC
  | CURRENT_USER
  | SESSION_USER

GRANT role_name [, ...] TO role_name [, ...] [ WITH ADMIN OPTION ]
  • 将表的dml权限授予一个或多个用户

    grant select,insert,update,delete,truncate on tablename to username1, username2, rolename1,rolename2;

  • 将表的dml权限授予所有用户

    grant select,insert,update,delete,truncate on tablename to public;

  • 将表、视图、数据库、模式等的所有权限授予用户

    grant all privileges on tablename to username;

  • 将表、视图、数据库、模式等的所有权限授予所有用户

    grant all privileges on tablename to public;

  • 将用户fire的权限授予icer

    grant fire to icer;

相关参考资料

—— [ PostgreSQL 9.5.3 中文手册 ]

—— [ PostgreSQL配置优化 ]

网上资料还有很多,大家可以多google一下。

postgreSQL建库、建角色、建用户及赋权 建库 新建数据库kbp create database kbp; 建角色 新建角色r_kbpdata_dml、r_kbpdata_qry、r_kbpdata_dev_qry create role r_kbpdata_dml; create role r_kbpdata_qry; create role r_kbpdata_dev_qry; 说明:create role 命令就只是新建角色,为后面用户赋权。 建用户 创建用户kbpdata、kbpopr,并同时创建了与用户同名的角色 c 阅读详情

相关推荐

PostgreSQL 用户和角色管理_pgadmin创建角色,2024年最新金九银十

创建的组角色没有权限。只有具有LOGIN权限的组角色才可以用作数据库连接的初始角色名。一旦组角色拥有了登录权限,即可当作用户一样来使用。superuser拥有对数据库操作的最高权限,可以完成对数据库的所有权限检查。角色想要创建角色,必须明确给出该权限。一旦角色拥有该权限,即可更改和删除其他角色,还可以给其他角色赋予或撤销成员关系。角色想要创建数据库,必须明确的给出权限。alter role 角色名 权限1 权限2 ···对pen授予创建数据库和创建角色的权限。④、createrole (创建角色)

2401_84281658的博客 1034

PostgreSql数据库创建用户并授权

postgreSql创建用户并授权

水滴的专栏 2万+

PostgreSQL只读用户权限配置全攻略:从单表到全库一键搞定

本文详细解析了PostgreSQL只读用户权限配置的完整流程与最佳实践。从理解权限层次结构(Database->Schema->Object)入手,针对单表、Schema级和全库三种典型场景,提供了具体的SQL脚本和自动化方案。重点阐述了如何正确使用GRANT、ALTER DEFAULT PRIVILEGES等命令,并强调了权限验证、排查方法及生产环境下的安全注意事项,帮助DBA和开发者高效、安全地配置只读访问。

weixin_29246195的博客 162

pgsql创建账户并授权

用户对所有数据库和表的所有权限。请确保仅向需要这些权限的用户授予此类权限。pgsql权限grant 所有权限给 venuspostgres。完成pg_hba.conf配置。

liu289747235的专栏 2813

PostgreSQL权限管理实战

本文详细介绍了在Azure Database for PostgreSQL中设置角色权限的完整流程。通过创建数据库、角色和用户,并分配表/Schema权限的具体示例,解析了常见权限错误"permission denied for schema public"的成因及解决方案。特别针对PostgreSQL 15版本默认移除public schema创建权限的情况,提供了正确的授权步骤,包括USAGE权限的授予。文章强调了权限管理对数据库安全性和开发效率的重要性,并指出检查当前数据库和用户权

m0_74337424的博客 65

PostgreSQL数据库从入门到精通系列之十七:创建账号、赋予账号数据库权限、赋予账号表权限、撤销账号权限、创建角色、添加用户到角色、赋予角色表的owner

注意:如果您只想撤销 SELECT 权限,可以使用 REVOKE SELECT ON ALL SEQUENCES IN SCHEMA public FROM debeziumcdc;这个命令将会从 public 架构下的所有序列中撤销 debeziumcdc 账号的 USAGE 和 SELECT 权限。请确保您具有足够的权限来执行 REVOKE 命令。要撤销在 PostgreSQL 14 中使用的 GRANT 命令授予的账号权限,可以使用 REVOKE 命令。

zhengzaifeidelushang的博客 596

【PostgreSQL】系列之 一 用户创建和授权(三)

PG中,围绕角色进行权限的管理。它可以被看做是一个user,或一组user。区分role、user、group。user和group是PG 8.1之前的两个实体,role是那之后唯一存在的实体,现在user和role,等价。

康师傅没有眼泪 1万+

【异常】PGSQL提示报错ERROR:permission denied for database postgres

遇到的错误ERROR: permission denied for database postgres。

奶爸的编程之路,也就一周冷个三天 2558

PostgreSQL 创建用户并赋予权限

1、创建一个test用户 2、创建COMPANY表 3、设置权限 3.1、postgresql权限说明 3.2、设置权限语法 3.3、设置用户scheam的使用权限 3.4、对表授权 3.4.1、设置用户对表的所有权限 3.5撤销权限 3.5.1、撤销用户对COMPANY表的所有权限 3.5.2、撤销用户scheam的使用权限 4、注意 ———————————————— 参考:PostgreSQ......

qq_45143653的博客 1万+

推荐系统公平性之流行度偏差(fairness in recommender systems -- popularity bias)

主要参考论文:《The Unfairness of Popularity Bias in Recommendation》 RMSE@RecSys 2019 流行度偏差是什么 先定义流行物品和非流行物品。下图是(Movielens 1M)数据集中物品的评分情况。 图的横坐标表示不同物品,纵坐标表示物品的评分次数。可以看出只有少部分物品得到了很多的评分,大部分曲线尾部的物品都只有少量的评分,我们也把这部分物品称为长尾物品。在本文中,我们取曲线的前20%对应的物品为流行物品,剩余的为非流行物品(长尾物品)。 然

beilizhang的博客 5304

基于FaceX-Zoo实现的Face Mask Adding人脸戴口罩

人脸系列文章目录 文章目录人脸系列文章目录前言一、加口罩效果二、实现原理二、代码实现 前言 目前人脸加口罩均为在人脸位置贴图式的,非常不真实。前段时间京东开源一个基于PRnet实现的3D口罩拟合人脸,加口罩非常逼真,但是只是单独一个加口罩demo,没有完整的流程。于是本人结合人脸检测,关键点对齐。PRnet加口罩实现一个完整的加口罩流程。只需一个命令简单方便调用,实现人脸加口罩。 https://github.com/JDAI-CV/FaceX-Zoo 一、加口罩效果 下图可以看出效果还是非常逼真的

zengwb的博客 3391

PostgreSql 用户及权限管理

ALTER DEFAULT PRIVILEGES 允许设置将被应用于未来要创建的对象的特权(它不会影响分配给已经存在的对象的特权)。当前,只能修改用于模式、表(包括视图和外部表)、序列、函数和类型(包括域)的特权。其中,可设置权限的函数包括聚集函数和过程函数。当这个命令应用于函数时,单词 FUNCTIONS 和 ROUTINES 是等效的。(推荐使用 ROUTINES,因为它是用来囊括函数和过程的一个标准术语。在较早的 PostgreSQL 发行版中,只允许单词 FUNCTIONS。

脑子进水养啥鱼?的博客 1万+

±10V ADC 输入电路的高共模差分输入电压

这篇文章分析了±10V ADC输入电路的设计需求与挑战,重点讨论了高共模差分输入电压的处理方案。文章首先明确了设计目标,即安全转换±10V差分信号并保持信号完整性,同时克服高共模电压、阻抗匹配和噪声优化等难点。随后详细比较了仪表放大器和差分放大器的性能特点,并提出了器件选型理论。在信号链架构部分,文章通过公式推导阐述了增益设置、共模抑制设计和输入阻抗匹配等关键技术。此外,还建立了噪声源模型,提出了噪声优化措施。最后,文章总结了设计验证方法,并扩展了在工业保护和生物电信号采集等场景的应用。该设计强调根据具体应

泛红尘的博客 1962

【PostgreSQL】入门篇——如何创建、删除和管理数据库及其用户,包括权限设置和角色管理

通过上述步骤,您可以在 PostgreSQL 中创建、删除和管理数据库及其用户,设置权限和角色。了解常见问题及其解决方法将帮助您更有效地管理 PostgreSQL 数据库。如果您在使用过程中遇到其他问题,建议查阅 PostgreSQL 官方文档或相关社区以获取更多支持。

thinking_chou的专栏 3449

机器学习预测土壤养分:从电导率、pH到随机森林与神经网络的农业实践

在智慧农业与精准农业领域,机器学习已成为处理复杂农业数据、挖掘潜在规律的关键技术。其核心原理在于通过算法从多维数据中自动学习特征与目标变量之间的映射关系,尤其擅长捕捉非线性关联。这项技术的核心价值在于能够将传统上依赖昂贵、耗时实验室分析的问题(如土壤养分检测),转化为基于易获取传感器数据(如电导率、pH值)的快速、低成本预测任务,为农业生产的实时决策与资源优化提供了全新可能。其典型应用场景包括作物生长监测、产量预测以及精准施肥管理等。本文聚焦于利用随机森林和神经网络等回归算法,构建通过土壤物理参数预测氮磷钾

weixin_33693070的博客 670

基于改进YOLO11的天际线检测算法:复杂光照与恶劣天气适配实战

针对特定任务的YOLO改进,不应追求通用SOTA,而应深入理解任务的物理退化机理。Retinex对应光照模型、FAD对应散射模型、Wise-IoU对应边界不确定性——每个改进都有明确的物理解释,而非盲目的模块堆叠。时序一致性:引入轻量级RNN/Transformer模块利用视频帧间信息补偿单帧退化;多模态融合:结合红外/NIR波段穿透雾霾,与可见光特征在FAD-Neck中交叉注意力融合;自监督预训练:在海量无标注天际线视频上用MAE预训练Backbone,缓解恶劣天气标注稀缺问题。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 97

postgresql数据库用户角色权限管理命令

5、每个用户默认具有所有数据库public 模式的访问和创建权限,但默认没有访问其他用户创建的对象权限。postgresql数据库角色与用户基本是一个概念,用户默认有login权限,这是二者唯一区别。3、给角色授予cep数据库下message_center模式下的表的查询权限。4、登录用户测试查询权限是否生效。2、给角色授权登录权限。

qq_37139220的博客 214

机器人环境仿真软件:Gazebo_(6).传感器仿真

通过 Gazebo 和 ROS,我们可以方便地配置和使用多种传感器,进行机器人环境的仿真和调试。传感器仿真不仅帮助我们验证和测试机器人的感知能力,还可以在真实部署前发现和解决潜在的问题。本节详细介绍了如何在 Gazebo 中配置激光雷达、摄像头、IMU、声纳和 GPS 传感器,并展示了如何在 ROS 中接收和处理这些传感器数据。此外,还介绍了多传感器融合的基本方法和调试工具,希望这些内容能对你的机器人仿真工作有所帮助。

kkchenjj的博客 1391

三大主流数据库权限模型对比:User与Database的本质差异

本文对比了MySQL、Oracle和PostgreSQL三种主流数据库中User(用户)和Database(数据库)的核心概念与区别。MySQL中用户与数据库是多对多关系,Oracle用户即模式所有者,PostgreSQL则通过角色系统管理权限。文章详细分析了各数据库的用户权限模型、对象引用方式及跨数据库访问特性,并提供了创建用户和数据库的SQL示例。最后给出最佳实践建议,包括权限管理策略和数据库迁移注意事项。三种数据库在用户与数据库关系上存在显著差异,理解这些区别对数据库设计和管理至关重要。

Auspicious航的博客 916

PX4从放弃到精通(五):PX4中的姿态表示方法及转换关系

文章目录机体坐标系与地理坐标系一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 机体坐标系与地理坐标系 在实际应用中,加速度计的测量轴是由运动平台安装固定此器件的轴向决定的。这些坐标轴就形成了载体坐标系,定义如下: 坐标原点设在载体质心(这样可简化运动方程的推导); y轴指向载体前方,称为横滚轴,横滚角以y轴为起始旋转轴而得到,符合右手定则; x轴与y轴夹角90°,指向载体横向,称为俯仰轴,俯仰角以x轴为起始旋转轴而得到,符合右手定则; z轴与x轴、y轴构成右手笛卡儿坐标系,指向载体垂直方向

超维空间科技的博客 8116

【WRF数据准备】土地利用数据-MODIS MCD12Q1数据下载及制备

【WRF数据准备】MODIS静态地理数据下载及制备

WW、forever的博客 3413

转:PostgreSQL角色、用户、权限和数据库安全

PostgreSQL实现了基于角色的存取控制机制。角色是权限的集合。可以将权限赋给用户,也可以将权限赋给角色。可以将角色赋给一个用户,该用户将拥有角色的所有权限。也可以将角色赋给其它的角色。PostgreSQL中的用户和角色使用同一个名字空间。数据库中不能有两个用户同名,不能有两个角色同名,也不能有一个用户和一个角色同名。数据库中存在一个内置的超级用户postgres,postgres可以在数据库...

weixin_34387284的博客 166

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

创建pgsql的数据库

创建pgsql的数据库 mkdir -p /var/lib/pgsql/data      //创建pgsql的数据库目录cd /var/lib/pgsql chown postgres.postgres data     //改变目录的所属用户用组su  postgres                     //切换到postgres,不然初...

journeyIT的博客 1140

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

PostgreSQL用户和角色的创建和管理

中,用户和角色是用于对数据库进行权限管理的重要概念。用户是数据库系统中的实体,可以登录数据库并执行操作,而角色是一组权限的集合,可以被授予给多个用户。CREATEROLE/NO CREATEROLE:指定用户是否有创建角色的权限。CREATEDB/NO CREATEDB:指定用户是否有创建数据库的权限。INHERIT/NOINHERIT:指定用户是否能够继承其所属角色的权限。语句授予和撤销权限,可以灵活地管理数据库的访问和权限。语句授予用户和角色权限,并撤销已授予的权限。语句修改用户和角色的属性,使用。

互联网知识分享 5570

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

PG数据库之用户权限

PostgreSQL数据库的用户权限管理是确保数据库安全、完整性和高效运行的关键组成部分。通过精细的用户权限管理,可以实现对数据库资源的访问和操作的严格控制,防止未经授权的访问和修改。在实际应用中,应根据业务需求和安全考虑合理设置和管理用户权限。同时,应定期审查权限设置确保它们符合组织的安全策略和合规要求。通过有效的用户权限管理可以提高数据库的安全性、可用性和性能为业务的发展提供有力支持。

一个老Java开发的自白 3008
上一篇: Error querying database. Cause: java.sql.SQLException: The user specified as a definer (''@'') doe
下一篇: centos安装ffmpeg
fire_in_java
博客等级 码龄14年 122粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fire_in_java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值