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

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

SQL Server数据库迁移到MySQL的完整指南

《SQLServer数据库迁移到MySQL的完整指南》在企业应用开发中,数据库迁移是一个常见的需求,随着业务的发展,企业可能会从SQLServer转向MySQL,原因可能是成本、性能、跨平台兼容性等... 目录一、迁移前的准备工作1.1 确定迁移范围1.2 评估兼容性1.3 备份数据二、迁移工具的选择2.1

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php