第二十五天: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