如何Ubuntu部署PostgreSQL?

PostgreSQL

1 基础知识

1.1 PostgreSQL简介

PostgreSQL是一个功能强大的开源对象关系数据库系统,经过30多年的积极开发,具有良好的可靠性、强大的功能和优良的性能。
PostgreSQL是Berkeley开源代码的后代,它支持大部分SQL标准。

1.2 PostgreSQL的特点

– 高度靠性
– 考度可扩展性(支持自定义数据类型、函数和不同的编程语言代码而无需编译)

1.3 PostgreSQL的架构

2 最佳实践

2.1 系统的配置

2.1.1 基本配置

IP Address = 10.168.0.107
OS = Ubuntu 24.04 LTS
HostName = postgresql.cmdschool.org

2.1.2 安装常用工具

apt install -y vim

2.1.3 升级系统

apt full-upgrade -y

执行完升级之后,重启操作系统,

reboot

2.2 安装PostgreSQL包

2.2.1 安装PostgreSQL服务端

apt install -y postgresql

2.2.2 检查安装的软件包

dpkg -l *postgresql*

显示如下:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                      Version               Architecture Description
+++-=========================-=====================-============-=========================================================
ii  postgresql                16+257build1.1        all          object-relational SQL database (supported version)
ii  postgresql-16             16.9-0ubuntu0.24.04.1 amd64        The World's Most Advanced Open Source Relational Database
un  postgresql-16-jit-llvm                           (no description available)
un  postgresql-9.1                                   (no description available)
un  postgresql-client                                (no description available)
ii  postgresql-client-16      16.9-0ubuntu0.24.04.1 amd64        front-end programs for PostgreSQL 16
ii  postgresql-client-common  257build1.1           all          manager for multiple PostgreSQL client versions
ii  postgresql-common         257build1.1           all          PostgreSQL database-cluster manager
un  postgresql-contrib-16                            (no description available)
un  postgresql-doc                                   (no description available)
un  postgresql-doc-16                                (no description available)
un  postgresql-pgmp                                  (no description available)
un  postgresql-server-dev-all                        (no description available)

2.3 配置PostgreSQL

2.3.1 确认服务配置服务自启动

systemctl status postgresql.service
systemctl enable postgresql.service

2.3.2 检查服务的启动

ss -antp | grep postgres

其他的服务控制命令,请参考如下指令,

LISTEN 0      200                 127.0.0.1:5432                0.0.0.0:*     users:(("postgres",pid=4398,fd=6)) 

注:以上可知该服务使用的端口是“5432/tcp”且只有本机可访问
亦可以进程的方式查看,

pgrep -a postgres

其他的服务控制命令,请参考如下指令,

4398 /usr/lib/postgresql/16/bin/postgres -D /var/lib/postgresql/16/main -c config_file=/etc/postgresql/16/main/postgresql.conf
4399 postgres: 16/main: checkpointer 
4400 postgres: 16/main: background writer 
4402 postgres: 16/main: walwriter 
4403 postgres: 16/main: autovacuum launcher 
4404 postgres: 16/main: logical replication launcher 

注:以上可知数据目录为“/var/lib/postgresql/16/main”

2.3.3 检查服务的版本

psql -V

可见如下显示,

psql (PostgreSQL) 16.9 (Ubuntu 16.9-0ubuntu0.24.04.1

2.4 连接到PostgreSQL

2.4.1 切换到PostgreSQL用户

su - postgres

2.4.2 登录到PostgreSQL

psql

显示如下,

psql (9.6.11)
Type "help" for help.

postgres=#

注:以上证明你处于PostgreSQL提示符环境

2.4.3 显示当前的数据库

\l

数据库显示如下,

                                                   List of databases
   Name    |  Owner   | Encoding | Locale Provider | Collate |  Ctype  | ICU Locale | ICU Rules |   Access privileges   
-----------+----------+----------+-----------------+---------+---------+------------+-----------+-----------------------
 postgres  | postgres | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           | 
 template0 | postgres | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           | =c/postgres          +
           |          |          |                 |         |         |            |           | postgres=CTc/postgres
 template1 | postgres | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           | =c/postgres          +
           |          |          |                 |         |         |            |           | postgres=CTc/postgres
(3 rows)

2.4.4 获取帮助

\h

2.4.5 退出PostgreSQL登录

\q

2.5 配置TCP/IP用户登录

2.5.1 修改管理员密码

su - postgres
psql
\password

2.5.2 开启协议的连接方式

cp /etc/postgresql/16/main/postgresql.conf /etc/postgresql/16/main/postgresql.conf.default
vim /etc/postgresql/16/main/postgresql.conf

加入如下配置:

listen_addresses = '*'
port = 5432
password_encryption = scram-sha-256

重启服务使配置生效,

systemctl restart postgresql.service

2.5.3 配置用户连接权限

vim /etc/postgresql/16/main/pg_hba.conf

加入如下配置:

# IPv4 local connections:
host    all             all             0.0.0.0/0               scram-sha-256

重载使服务生效,

systemctl reload postgresql.service

测试登陆,

psql -h 10.168.0.107 -U postgres

参阅文档
==============

简介页面
———-
https://www.postgresql.org/about/

下载页面
———
https://yum.postgresql.org/repopackages.php
https://www.postgresql.org/download/

安装页面
——–
https://www.postgresql.org/download/linux/redhat/

使用文档
——–
https://www.postgresql.org/docs/9.6/index.html
https://www.postgresql.org/docs/

没有评论

发表回复

PostgreSQL
如何使用yum部署PostgreSQL 9?

1 基础知识 1.1 PostgreSQL简介 PostgreSQL是一个功能强大的开源对象关系数据 …

PostgreSQL
如何管理PostgreSQL的角色?

1 基础知识 1.1 角色的概念 – PostgreSQL使用角色概念管理数据库访问权限 …

PostgreSQL
如何管理PostgreSQL的库?

1 基础知识 1.1 数据仓库的概念 – 数据库是SQL对象的命名集合,即数据对象 &# …