postgresql的用户、数据库和表

在 PostgreSQL 中,用户、数据库和表是关系型数据库系统的基本组成部分。理解这些概念对数据库管理和操作至关重要。下面是对这些概念的详细解释:

1. 用户(User)

在 PostgreSQL 中,用户(也称为 角色)是一个用于身份验证和授权的实体。每个用户都有一个唯一的名称,并且可以有不同的权限(比如连接数据库、创建表、查询数据等)。

  • 超级用户(Superuser):拥有所有权限,能够执行任何操作,包括绕过权限限制。
  • 普通用户:只能执行被授予权限的操作。普通用户的权限可以细分,例如可以只允许查询数据,但不能删除数据或创建新表。

用户和角色的区别:

  • 在 PostgreSQL 中,“用户”和“角色”通常是同义的,因为每个用户都是一个角色,并且角色可以有权限来执行操作。
  • 角色有两种类型:
    • 登录角色(Login Role):能够用于连接数据库的角色(即“用户”)。例如,testuser 是一个登录角色,可以用于身份验证。
    • 非登录角色:不允许登录,只是用来分配权限。通常用于分组,例如一个用于管理特定权限的角色。

创建用户的基本命令:

CREATE USER username WITH PASSWORD 'password';

2. 数据库(Database)

在 PostgreSQL 中,数据库是存储所有数据、表、索引、视图、用户等信息的容器。每个 PostgreSQL 系统可以包含多个数据库,每个数据库相互独立,互不干扰。

  • 数据库用户:每个数据库都有一个所有者,通常是创建该数据库的用户。所有者可以授予其他用户对该数据库的访问权限。
  • 访问控制:通过 PostgreSQL 的权限系统,可以限制哪些用户可以访问特定的数据库,以及他们可以执行哪些操作。

创建数据库的基本命令:

CREATE DATABASE dbname;
  • 默认数据库:PostgreSQL 会在安装时创建一些默认的数据库,例如 postgrestemplate0template1。其中,template0template1 是模板数据库,通常不用于直接操作。

3. 表(Table)

是 PostgreSQL 数据库中的基本数据存储单元。表由行和列组成,每一行表示一个数据记录,每一列表示一个数据字段。每个表都有一个名称,并且可以定义不同的数据类型。

  • 列(Column):表的列定义了存储的数据类型,比如整数、文本、日期等。
  • 行(Row):表的行表示实际的数据记录,每行可以包含多个列的值。
  • 主键(Primary Key):每个表通常都有一个主键,确保每行数据的唯一性。主键列的值不能重复,并且不能为空。
  • 外键(Foreign Key):表与表之间的关联通过外键来实现,外键列指向另一个表的主键或唯一键。

创建表的基本命令:

CREATE TABLE tablename (column1 datatype,column2 datatype,...
);

例如:

CREATE TABLE employees (id SERIAL PRIMARY KEY,name VARCHAR(100),position VARCHAR(50)
);

4. 数据库与用户的关系

  • 一个用户可以有多个数据库的访问权限,而每个数据库也可以有多个用户。
  • 所有者:每个数据库都有一个所有者角色,默认是创建该数据库的用户。所有者具有完全的权限,其他用户可以被授予不同的访问权限。

例如,创建数据库时,你可以指定一个数据库的所有者:

CREATE DATABASE testdb OWNER devuser;

这个命令会创建一个名为 testdb 的数据库,所有者是 devuser

5. 表与数据库的关系

  • 表属于数据库。一个数据库中可以有多个表,每个表存储一类相关的数据。
  • 当你连接到某个数据库时,你可以在该数据库内创建、删除或修改表。

例如,假设你已连接到 testdb 数据库,你可以在其中创建一个名为 users 的表:

CREATE TABLE users (id SERIAL PRIMARY KEY,username VARCHAR(50) UNIQUE NOT NULL,password VARCHAR(50) NOT NULL
);

6. 常见的权限控制

PostgreSQL 的权限控制是基于角色的,通常你需要授予不同的用户对不同数据库和表的不同权限。权限可以是:

  • 连接权限:允许某个用户连接到某个数据库。
  • 表级权限:例如 SELECT(查询)、INSERT(插入)、UPDATE(更新)、DELETE(删除)等。
  • 数据库级权限:例如创建表、创建视图等。

授予权限的命令:

GRANT SELECT, INSERT ON table_name TO username;

撤销权限的命令:

REVOKE SELECT, INSERT ON table_name FROM username;

总结:

  • 用户(User/Role):身份认证和授权的实体,控制谁能访问数据库。
  • 数据库(Database):存储数据的容器,一个 PostgreSQL 实例可以包含多个数据库。
  • 表(Table):数据库中存储数据的结构,包含多个列和行。

PostgreSQL 的权限管理系统使得可以根据角色来控制哪些用户可以访问哪些数据库,以及他们可以执行哪些操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/9885.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA实战开源项目:在线文档管理系统(Vue+SpringBoot) 附源码

本文项目编号 T 038 ,文末自助获取源码 \color{red}{T038,文末自助获取源码} T038,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

Python设计模式 - 组合模式

定义 组合模式(Composite Pattern) 是一种结构型设计模式,主要意图是将对象组织成树形结构以表示"部分-整体"的层次结构。这种模式能够使客户端统一对待单个对象和组合对象,从而简化了客户端代码。 组合模式有透明组合…

算法每日双题精讲 —— 前缀和(【模板】一维前缀和,【模板】二维前缀和)

在算法竞赛与日常编程中,前缀和是一种极为实用的预处理技巧,能显著提升处理区间和问题的效率。今天,我们就来深入剖析一维前缀和与二维前缀和这两个经典模板。 一、【模板】一维前缀和 题目描述 给定一个长度为 n n n 的整数数组 a a a&…

VLLM性能调优

1. 抢占 显存不够的时候,某些request会被抢占。其KV cache被清除,腾退给其他request,下次调度到它,重新计算KV cache。 报这条消息,说明已被抢占: WARNING 05-09 00:49:33 scheduler.py:1057 Sequence gr…

知识管理系统塑造企业文化与学习型组织的变革之路

内容概要 知识管理系统(Knowledge Management System, KMS)是指组织内部为有效获取、存储、共享和应用知识而建立的结构和技术体系。这一系统不仅是信息技术的运用,更是推动企业文化和学习型组织发展的重要工具。在当今快速变化的商业环境中…

智能汽车网络安全威胁报告

近年来随着智能汽车技术的快速发展,针对智能汽车的攻击也逐渐从传统的针对单一车辆控制器的攻击转变为针对整车智能化服务的攻击,包括但不限于对远程控制应用程序的操控、云服务的渗透、智能座舱系统的破解以及对第三方应用和智能服务的攻击。随着WP.29 …

Python练习(2)

今日题单 吃鱼还是吃肉 PTA | 程序设计类实验辅助教学平台 降价提醒机器人PTA | 程序设计类实验辅助教学平台 幸运彩票 PTA | 程序设计类实验辅助教学平台 猜帽子游戏 PTA | 程序设计类实验辅助教学平台 谁管谁叫爹 PTA | 程序设计类实验辅助教学平台 就不告诉你 PTA | 程…

Ubuntu-手动安装 SBT

文章目录 前言Ubuntu-手动安装 SBT1. SBT是什么?1.1. SBT 的特点1.2. SBT 的基本功能1.3. SBT 的常用命令 2. 安装2.1. 下载2.2. 解压 sbt 二进制包2.3. 确认 sbt 可执行文件的位置2.4. 设置执行权限2.5. 创建符号链接2.6. 更新 PATH 环境变量2.7. 验证 sbt 安装 前言 如果您觉…

240. 搜索二维矩阵||

参考题解:https://leetcode.cn/problems/search-a-2d-matrix-ii/solutions/2361487/240-sou-suo-er-wei-ju-zhen-iitan-xin-qin-7mtf 将矩阵旋转45度,可以看作一个二叉搜索树。 假设以左下角元素为根结点, 当target比root大的时候&#xff…

Golang笔记——常用库context和runtime

大家好,这里是Good Note,关注 公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Golang的常用库context和runtime,包括库的基本概念和基本函数的使用等。 文章目录 contextcontext 包的基本概念主要类型和函数1. **…

Leetcode:350

1,题目 2,思路 首先判断那个短为什么呢因为我们用短的数组去挨个点名长的数组主要用map装长的数组max判断map里面有几个min数组的元素,list保存交集最后用数组返回list的内容 3,代码 import java.util.*;public class Leetcode…

《多线程基础之互斥锁》

【互斥锁导读】互斥锁是大家使用最多的线程同步手段,但仅仅知道怎么用还是不够的?比如:面试官问你"互斥锁是属于内核层还是应用层的同步保护机制?性能怎样?","频繁加解锁,会有什…

【Rust自学】15.0. 智能指针(序):什么是智能指针及Rust智能指针的特性

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 15.0.1 指针的基本概念 指针是一个变量在内存中包含的是一个地址,指向另一个数据。 Rust 中最常见的指针是引用&#xff0c…

Android Studio 正式版 10 周年回顾,承载 Androider 的峥嵘十年

Android Studio 1.0 宣发于 2014 年 12 月,而现在时间来到 2025 ,不知不觉间 Android Studio 已经陪伴 Androider 走过十年历程。 Android Studio 10 周年,也代表着了我的职业生涯也超十年,现在回想起来依然觉得「唏嘘」&#xff…

Swing使用MVC模型架构

什么是MVC模式? MVC是一组英文的缩写,其全名是Model-View-Controller,也就是“模型-视图-控制器”这三个部分组成。这三个部分任意一个部分发生变化都会引起另外两个发生变化。三者之间的关系示意图如下所示: MVC分为三个部分,所以在MVC模型中将按照此三部分分成三…

1.Template Method 模式

模式定义 定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method 使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特…

arm-linux-gnueabihf安装

Linaro Releases windows下打开wsl2中的ubuntu,资源管理器中输入: \\wsl$gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz 复制到/home/ark01/tool 在 Ubuntu 中创建目录: /usr/local/arm,命令如下: …

【PyTorch】6.张量形状操作:在深度学习的 “魔方” 里,玩转张量形状

目录 1. reshape 函数的用法 2. transpose 和 permute 函数的使用 4. squeeze 和 unsqueeze 函数的用法 5. 小节 个人主页:Icomi 专栏地址:PyTorch入门 在深度学习蓬勃发展的当下,PyTorch 是不可或缺的工具。它作为强大的深度学习框架&am…

百度热力图数据获取,原理,处理及论文应用5

目录 0、数据简介0、示例数据1、百度热力图数据日期如何选择1.1、其他实验数据的时间1.2、看日历1.3、看天气 2、百度热力图几天够研究?部分文章统计3、数据原理3.1.1 ** 这个比较重要,后面还会再次出现。核密度的值怎么理解?**3.1.2 Csv->…

论文阅读(九):通过概率图模型建立连锁不平衡模型和进行关联研究:最新进展访问之旅

1.论文链接:Modeling Linkage Disequilibrium and Performing Association Studies through Probabilistic Graphical Models: a Visiting Tour of Recent Advances 摘要: 本章对概率图模型(PGMs)的最新进展进行了深入的回顾&…