PostgreSQL基操之角色、表空间、数据库与表

2023-10-12 18:20

本文主要是介绍PostgreSQL基操之角色、表空间、数据库与表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PostgreSQL基操之角色、表空间、数据库与表

  • 角色创建与管理
  • 表空间创建与管理
  • 数据库创建与管理
  • 表创建与管理

角色创建与管理

PostgreSQL数据库里没有User的概念,只有Role的概念。有的Role可以用于登录数据库,这些Role与其他数据库中的用户等价。

--创建可以登录的角色
create role sekiro with login password 'shadowDie2';--创建可以登录的角色并赋予创建数据库的权限
create role dba createdb login password 'shadowDie2';--创建可以登录的角色并设定密码有效期
create role ishin with login password 'shadowDie2' valid until '2023-10-12';--创建可以登录的角色并设定并发连接上限
create role genji with login password 'shadowDie2' connection limit 100;

使用角色登录数据库:

#psql -U 角色名称 -W 数据库名称
psql -U sekiro -W postgres

列出已有的角色:

postgres=# \duList of rolesRole name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------dba       | Create DB                                      | {}genji     | 100 connections                                | {}ishin     | Password valid until 2023-10-12 00:00:00+08    | {}postgres  | Superuser, Create role, Create DB, Replication | {}sekiro    |                                                | {}postgres=# select rolname,rolcreatedb,rolconnlimit,rolcanlogin from pg_roles;rolname  | rolcreatedb | rolconnlimit | rolcanlogin 
----------+-------------+--------------+-------------postgres | t           |           -1 | tsekiro   | f           |           -1 | tdba      | t           |           -1 | tishin    | f           |           -1 | tgenji    | f           |          100 | t
(5 rows)

移除角色:

postgres=# drop role genji;
DROP ROLE

表空间创建与管理

创建表空间必须是SUPERUSER角色。创建表空间并指定属主:

# 指定的location必须事先存在
postgres=# create tablespace sekiro owner sekiro location '/pgdata/sekiro';
CREATE TABLESPACEpostgres=# \dbList of tablespacesName    |  Owner   |    Location    
------------+----------+----------------pg_default | postgres | pg_global  | postgres | sekiro     | sekiro   | /pgdata/sekiro
(3 rows)

修改表空间:

--重命名表空间
ALTER TABLESPACE sekiro RENAME TO wolf;--修改属主
ALTER TABLESPACE sekiro OWNER TO ishin;

移除表空间:

postgres=# drop tablespace sekiro;
DROP TABLESPACE

数据库创建与管理

创建数据库需要CREATEDB权限或者SUPERUSER角色。创建数据库并指定属主和表空间:

create database sekiro
with owner=sekiro tablespace=sekiro encoding='UTF8';

列出已有的数据库:

postgres=# \lList of databasesName    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | sekiro    | sekiro   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +|          |          |             |             | postgres=CTc/postgrestemplate1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +|          |          |             |             | postgres=CTc/postgres
(4 rows)

表创建与管理

登录数据库:

psql -U sekiro -W sekiro

创建表:

CREATE TABLE staff(staff_id SERIAL PRIMARY KEY,first_name VARCHAR(45) NOT NULL,last_name VARCHAR(45) NOT NULL,email VARCHAR(100) NOT NULL UNIQUE
);

检查当前数据库中的表:

sekiro=> \dtList of relationsSchema | Name  | Type  | Owner  
--------+-------+-------+--------public | staff | table | sekiro
(1 row)sekiro=> insert into staff(staff_id,first_name,last_name,email) values (1,'Kuro','Satoshi','kuro.satoshi@sekiro.com');
INSERT 0 1sekiro=> select * from staff;staff_id | first_name | last_name |          email          
----------+------------+-----------+-------------------------1 | Kuro       | Satoshi   | kuro.satoshi@sekiro.com
(1 row)sekiro=> \dt+List of relationsSchema | Name  | Type  | Owner  |    Size    | Description 
--------+-------+-------+--------+------------+-------------public | staff | table | sekiro | 8192 bytes | 
(1 row)

将表的查询权限授予其他用户:

[postgres@dbhost pgdata]$ psql -U ishin -W sekiro
Password for user ishin: 
psql (9.2.4)
Type "help" for help.sekiro=> select * from staff;
ERROR:  permission denied for relation staffsekiro=> \q[postgres@dbhost pgdata]$ psql -U sekiro -W sekiro
Password for user sekiro: 
psql (9.2.4)
Type "help" for help.sekiro=> grant select on staff to ishin;
GRANT

References
【1】https://www.postgresqltutorial.com/postgresql-administration/postgresql-schema/

这篇关于PostgreSQL基操之角色、表空间、数据库与表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/197623

相关文章

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们

Spring Boot 整合 MyBatis 连接数据库及常见问题

《SpringBoot整合MyBatis连接数据库及常见问题》MyBatis是一个优秀的持久层框架,支持定制化SQL、存储过程以及高级映射,下面详细介绍如何在SpringBoot项目中整合My... 目录一、基本配置1. 添加依赖2. 配置数据库连接二、项目结构三、核心组件实现(示例)1. 实体类2. Ma

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom

Java实现数据库图片上传功能详解

《Java实现数据库图片上传功能详解》这篇文章主要为大家详细介绍了如何使用Java实现数据库图片上传功能,包含从数据库拿图片传递前端渲染,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、数据库搭建&nbsChina编程p; 3、后端实现将图片存储进数据库4、后端实现从数据库取出图片给前端5、前端拿到

IDEA连接达梦数据库的详细配置指南

《IDEA连接达梦数据库的详细配置指南》达梦数据库(DMDatabase)作为国产关系型数据库的代表,广泛应用于企业级系统开发,本文将详细介绍如何在IntelliJIDEA中配置并连接达梦数据库,助力... 目录准备工作1. 下载达梦JDBC驱动配置步骤1. 将驱动添加到IDEA2. 创建数据库连接连接参数

Jmeter如何向数据库批量插入数据

《Jmeter如何向数据库批量插入数据》:本文主要介绍Jmeter如何向数据库批量插入数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Jmeter向数据库批量插入数据Jmeter向mysql数据库中插入数据的入门操作接下来做一下各个元件的配置总结Jmete