第二十五天:PostgreSQL安装和管理

一、PostgreSQL介绍

 1、PostgreSQL介绍

PostgreSQL,基于C语言开发,通常简称为PG或PGSQL.

PostgreSQL宣称是世界上最先进的开源数据库。

 官网: www.postgresgl.org

中文社区: http://www.postgres.cn
中文手册: http://www.postgres.cn/docs/12/index.html

参考网站:

https://www.runoob.com/postgresql/postgresq1-tutorial.htm1

https://www.runoob.com/manual/PostgresQL/index.htm1

PostgresQL开源许可( PostgresQL Licence)

https://www.postgresq1.org/about/licence/

2、PostgreSQL与MYsql对比

http://bbs.chinaunix.net/thread-1688208-1-1.htm1

 

 

 3、各种数据库性能比较

https://github.com/digoa1 周正中,德哥,阿里巴巴

 4、PostgreSQL的优势

 

二、PostgreSQL安装

 安装方法分为两种:

  二进制安装包进行安装各个Linux的发行版本中,很多都内置了PostgreSQL的二进制安装包,但内置的版本可能较旧。对于二进制包安装的方法是通过不同发行版本的Linux下的包管理器进行的,如在RHEL系统相关版本下用 yum 命令,在Debian或Ubuntu下使用 apt 命令
  源码编译安装
  使用源码编译安装相对更灵活,用户可以有更多的选择,可以选择较新的版本、配置不同的编译选项,编译出用户需要的功能。
官方安装文档:

   https://www.postgresql.org/download/

1、Rocky8 利用官方源安装 

 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql16-server
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16

#初始化数据库:/usr/pgsq1-12/bin/postgresq1-12-setup initdb

2、编译安装

官方帮助

https://www.postgresgl.org/docs/current/insta11-procedure.htm1
https://www.postgresq1.org/docs/current/installation.htm1 http://www.postgres.cn/v2/download

第一步:下载源代码

https://www.postgresql.org/ftp/source/

第二步:编译安装。过程与Linux下其他软件的编译安装过程相同
  ./configure
  make
  make install
第三步:编译安装完成后执行如下步骤
  使用initdb命令初使用化数据库
  启动数据库实例

 

 

 

三、PostgreSQL管理

1、 pg_ctl 命令管理 PostgresQL

pg_ctl 是一个实用的命令行工具,有以下常见功能
初始化 PostgresOL 数据库实例
启动、终止或重启 PostgreSQL数据库服务。
查看 PostgreSQL数据库服务的状态
让数据库实例重新读取配置文件。允许给一个指定的PostgreSQL进程发送信号
控制 standby 服务器为可读写
在 Windows平台下允许为数据库实例注册或取消一个系统服务

 

 2、初始数据库实例

 3、查看服务状态

 4、启动服务

 5、停止服务

 6、重启服务

 7、加载配置

 8、配置文件

 9、数据库的结构组织

 10、PG中的术语

 11、 psql 工具介绍和基本用法

虽然也可以使用PostgreSQL中图形化的客户端工具(如pgadmin)来实现上述功能。但如果掌握了psq!的使用方法,将会体会到它的方便之处。因为psq!是一个字符界面的工具,没有图形化工具使用上的一些限制。psql与 pgAdmin!l之间的关系类似于vi与某些图形化工具的关系。
psql 的历史命令与补全的功能
  ·可以使用上下键把以前使用过的命令或SOL语句调出来
  ·连续按两个tab键表示把命令补全或给出提示输入
psql 命令格式

 12、连接管理

(1)访问控制配置文件介绍

在PostgreSQL中,带有一个网络防火墙的功能的文件pg_hba.conf,可以控制允许设置哪些!P的机器访问数据库服务器。
HBA的意思是host-based authentication,也就是基于主机的认证,即实现PostgreSQL 防火墙功能initdb初始化数据目录时,会生成一个默认的pg_hba.conf文件。pg_hba.conf 文件的格式由很多记录组成,每条记录占一行。以#开头的行为注释及空白行会被忽略。
一条记录由若干个空格或由制表符分隔的字段组成,如果字段用引号包围,那么它可以包含空白每条记录声明一种连接类型、一个客户端IP地址范围(如果和连接类型相关)、一个数据库名、一个用户名字,以及对匹配这些参数的连接所使用的认证方法。
第一条匹配连接类型、客户端地址、连接请求的数据库名和用户名的记录将用于执行认证。如果选择了一条记录而且认证失败,那么将不再考虑后面的记录;如果没有匹配的记录,访问将被拒绝。即从上向下匹配,一旦匹配则不会再向下检查

 

 (2)打开远程连接

默认安装完的PG只监听1ocal。如果要远程连接,需要监听对外提供服务的IP地址。

 13、常用操作

(1)查看PSQL帮助

 (2)设置显示信息格式

(3)数据库的创建和修改

 

 (4)管理和查看模式

 

 (6)管理表

 (7)查看表

#列出所有表,视图,序列

\d
#列出pub1ic的schema中所有的表名,相当于show tables;

\dt
#查看t1的表信息
\dt t1
#支持通配符*和?,以下显示所有t开头的表

\dt t*

#列出myschema模式的表结构

\dt myschema.*
#查看t1的表结构,相当于desc

\d t1
#列出所有表信息,包括大小

hellodb-#  \dt+

 (8)系统表

 (9)表的CURD

 

(10)索引管理

 

(11)表空间

 #列出所有表空间,实际上PostgresQL中的表空间就是对应一个目录,放在这个表空间的表,就是把表的数据文件放到这个表空间下。

postgres=# \db

#复制表到文件中
testdb=# select * from t1;

(12)查看系统信息

 #查看版本信息

postgres=# select version();

#查看数据库启动时间
postgres=# select pg_postmaster_start_time();

#查看加载配置文件时间
postgres@ubuntu2004:~$ pg_ct1 reload
postgres=# select pg_conf load_time();

#查看时区和时间
postgres=# show timezone;

#临时修改
postgres=#settimezone='Asia/shanghai
SET
#永久修改时区
postgres@ubuntu2004:~$ vim/pgsql/data/postgresq1.conftimezone ='Asia/shanghai'

#查看当前用户
postgres=# select user:

#查看当前数据库
postgres=# c testdb

#查看当前session所在的客户端IP和端口
postgres=# select inet_client_addr(),inet_client_port();

#查看当前session所连接的数据库服务器的IP和端口postgres=# select inet server_addr(),inet_server_port();

(13)查看用户权限

#查看所有用户\du或\dg
postgres=# du

#查看当前用户
postgres=# select user;

#显示表,视图,序列的权限分配情况
postgres=#Z 

(14)事务管理和锁

PGSQL的事务中支持DML,DDL(除了create database,create tablespace),DCL在psql中事务是自动提交的。和MySQL相同,执行完一条delete或update语句后,事务就自动提交了如果不想自动提交,方法有两种。

 (15)常用的函数

 

14、用户和角色

PostgreSQL使用角色role的概念来管理数据库访问权限。角色是一系列相关权限的集合。为了管理方便,通常会把一系列相关的数据库权限赋给一个角色,如果哪个用户需要这些权限,就把角色赋给相应的用户。由于用户也拥有一系列的相关权限,为了简化管理,在PostgreSQL中,角色与用户是没有区别的,一个用户也是一个角色,因此可以把一个用户的权限赋给另一个用户。用户和角色在整个数据库实例中都是全局的,即在同一个实例中的不同数据库中,看到的用户也都是相同的。
在初始化数据库实例时,会创建一个预定义的超级用户,这个用户的名称与初始化该数据库实例的操作系统用户名相同。比如:如果数据库实例是建立在操作系统用户dba(通常使用 postgres 用户)下的,这个数据库超级用户的名称也会叫dba。可以用这个超级用户连接数据库,注意:dba默认会连接同名的数据库dba,而默认dba不存在,所以需要登录时指定连接数据库postgres进行登录,然后再创建其它的用户

3.6.1 创建用户和角色
在PostgresQL中,用户与角色是没有区别的。
用户和角色可以用来实现以下功能:
  用来登录数据库实例、
  管理数据库对象
创建用户与角色的语法如下:

CREATE USER name [[wITH] option [...]]
CREATE ROLE name [[wITH] option [ ...]]
#上面两个命令都可以创建用户,不同的是CREATE USER创建的用户默认可以登录,而CREATE ROLE不可以登录

 

 

  15、安装使用图形化工具 pgadmin

(1)pgadmin 介绍

pgAdmin 是一个免费的开源图形数据库管理工具,用于管理PostgreSQL和衍生的关系数据库,如EnterpriseDB的EDB Advanced Server。pgAdmin 可以以两种模式安装:服务器模式和桌面模式。服务器模式下的pgAdmin可以部署在不同的Web服务器中,如:Apache,Nginx等
pgAdmin 是一个在PostgreSQL许可下发布的免费软件项目。该软件可从PostgreSQL 镜像网络以源代码和二进制格式获得。因为从源代码编译比较繁琐,建议尽可能使用安装二进制包。pgAdmin 4 是对 pgAdmin 的完全重写,使用 Python 和Javascript/jQuery 构建官网:https://ww,pgadmin.org/
下载:

https://www.pgadmin.org/download/#容器版本
https://www.pgadmin.org/download/pgadmin-4-container/#windows版本
https://www.postgresq1.org/ftp/pgadmin/pgadmin4/v6.4/windows/

(2)安装 pgadmin

范例: 安装Windows版本的pgadmin

https://www.postgresgl.org/ftp/pgadmin/pgadmin4/v6.4/windows/

  

sudo rpm -i https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-2-1.noarch.rpm
sudo yum install pgadmin4
posted @ 2024-02-29 07:54  djyhello  阅读(125)  评论(0编辑  收藏  举报