一、PostgreSQL 安装前简介
PostgreSQL(通常简称为PG SQL)是一个强大、开源的关系型数据库管理系统(DBMS),它具有广泛的功能和可扩展性,被广泛用于企业和开发项目中,PostgreSQL 具有如下一些关键特点:
-
开源和免费: PostgreSQL 是一个自由开源软件,任何人都可以免费使用、修改和分发它。这使得它成为了许多开发者和组织的首选数据库系统。
-
高度可扩展: PostgreSQL 提供了丰富的扩展性选项,包括支持多种编程语言编写的插件,以及自定义数据类型和函数。这使得它能够满足各种不同规模和类型的应用需求。
-
ACID 兼容: PostgreSQL 遵循ACID(原子性、一致性、隔离性、持久性)事务属性,确保了数据的完整性和可靠性,特别适合需要高度数据一致性的应用程序。
-
支持复杂数据类型: 除了传统的关系型数据,PostgreSQL还支持非常复杂的数据类型,如数组、JSON、XML、几何数据、全文搜索等。这使得它非常适合存储和查询各种类型的数据。
-
强大的扩展性: PostgreSQL支持多种类型的索引,包括B树、哈希、GiST、SP-GiST、GIN和BRIN等,以便于不同类型的查询优化。此外,用户可以自定义索引类型。
-
丰富的内置函数和扩展: PostgreSQL 包含大量内置函数,同时还支持用户定义的函数,这使得可以实现各种复杂的数据操作和计算。
-
多版本并发控制: PostgreSQL 使用多版本并发控制(MVCC)来处理并发事务,这允许多个事务同时访问数据库,而不会相互干扰。
-
安全性: PostgreSQL 提供了强大的安全功能,包括身份验证、授权和SSL支持,以保护数据免受未经授权的访问和窃听。
-
活跃的社区和生态系统: PostgreSQL 拥有庞大的全球社区,提供了大量的文档、教程和支持资源。此外,有许多第三方工具和库可用于与 PostgreSQL 集成。
PostgreSQL 所具备的高度可定制和可扩展的数据库特性,使之适用于各种不同的应用场景,从小型项目到大规模企业级应用都能够发挥其优势。它的开源性质和活跃的社区支持使得它成为了数据库领域的一项重要选择。
PostgreSQL 作为一个跨平台的开源数据库管理系统,支持在多种操作系统上安装和运行:
-
Linux:PostgreSQL 在几乎所有主流的 Linux 发行版上都有支持,包括但不限于:
- Ubuntu
- Debian
- CentOS
- Red Hat Enterprise Linux (RHEL)
- Fedora
- SUSE Linux Enterprise Server (SLES)
- Oracle Linux
- 等等
-
Windows:PostgreSQL 可以在不同版本的 Windows 操作系统上安装,包括:
- Windows 10
- Windows Server 2016/2019
- Windows 7/8/8.1
- 等等
-
macOS:PostgreSQL 也可以在 macOS 上安装,通常通过 Homebrew 或官方 PostgreSQL 安装程序进行安装。
-
BSD 系统:PostgreSQL 在一些 BSD 系统上也有支持,例如:
- FreeBSD
- OpenBSD
- NetBSD
-
Solaris:PostgreSQL 也可以在 Solaris 操作系统上安装。
需要注意的是,不同的操作系统版本和发行版可能会有不同的安装方法和配置步骤。你可以访问 PostgreSQL 官方网站 (https://www.postgresql.org/) 获取关于在特定操作系统上安装 PostgreSQL 的详细指南和下载链接。
PostgreSQL 15 于2022年10月发布,它被视为当前最新的稳定主要版本。
PostgreSQL 15 版本的发布主要侧重于性能提升上,在管理本地和分布式部署中的工作负载方面成效显著,包括改进的排序功能。此版本通过添加流行的 MERGE 命令改善了开发人员的体验,并添加了更多用于监测数据库状态的能力。
PostgreSQL 15 版本发行说明:
https://www.postgresql.org/docs/15/release-15.html
二、PostgreSQL 安装过程
接下来我们看看如何在Windows 10中安装和配置 PostgreSQL 15.4。
系统环境:
- Windows 10 企业版
- postgresql-15.4-1-windows-x64.exe
1. 下载PostgreSQL 安装包
从官网下载适用于WIndows系统的安装包:
官网下载页面:
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
官网直接下载地址:
https://get.enterprisedb.com/postgresql/postgresql-15.4-1-windows-x64.exe
我们选择PostgreSQL 15.4版,操作系统环境选择 Windows x86-64。
下载完成后如图所示:
2. 安装PostgreSQL
直接双击运行安装程序 postgresql-15.4-1-windows-x64.exe,开始安装。
初学者安装,选择默认目录即可,点击下一步
选择默认安装组件,下一步
选择数据存放目录,通常生产部署选择放到其他磁盘目录,学习用途存放到默认目录即可。
设置输入数据库超级用户密码:
此处我们设置简单密码:123456
设置端口,采用默认端口: 5432
下一步
检查确认安装设置选项
点击下一步,开始安装
安装中,稍等片刻
安装完成,点击 Finish !
接下来弹出附加软件(插件)安装窗口
在此处选择需要安装的插件,以支持特定的应用,比如 PostGIS
这里我们选择不安装,点击取消
取消插件安装后,PostgreSQL 15.4 也就全部安装完成了。
Windows环境下的 PostgreSQL 15.4 安装还是比较容易的。
三、PostgreSQL 安装后配置
1. 检查 PostgreSQL 安装后环境
查看安装后的开始菜单
查看安装后的文件夹目录
C:\Program Files\PostgreSQL\15\bin ------ 主要操作命令存放目录
C:\Program Files\PostgreSQL\15\data ------ 数据文件存放目录
C:\Program Files\PostgreSQL\15\doc ------- 离线Html 文档
C:\Program Files\PostgreSQL\15\pgAdmin 4 -------- 自带的客户端连接工具
查看 Windows 服务,可以见到 PostgreSQL 服务进程已启动,正在运行
这样就确认了 PostgreSQL 已经成功安装。
2. 使用客户端工具pgAdmin 4 登录 PostgreSQL
2.1 pgAdmin 4 架构简介
pgAdmin 4 是 Postgres 领先的开源管理工具。pgAdmin 旨在通过单个图形界面监控和管理多个本地和远程 PostgreSQL 和 EDB Advanced Server 数据库服务器,该界面允许轻松创建和管理数据库对象,以及用于管理数据库的许多其他工具。
pgAdmin 可以以两种模式安装:桌面模式和服务器模式。桌面模式作为独立应用程序安装,由同一操作系统用户使用,而服务器模式可以通过网络访问,允许多个用户使用。
两种模式下使用的 pgAdmin 架构和技术实现都遵循 3 层架构方法。
服务器模式
服务器模式可以在作为反向代理运行的网络服务器后面配置,也可以使用 WSGI 接口进行配置。它可以在本地或通过网络从 Chrome、Firefox、Safari 等浏览器访问。以下架构图显示了服务器模式下 pgAdmin 的简单概述。pgAdmin 可以作为 Apache HTTPD 下的 WSGI 应用程序运行,使用 mod_wsgi,使用 uWSGI 或 Gunicorn 独立运行,或者在 NGINX 下使用 uWSGI 或 Gunicorn 运行。它还可以在可在 Docker、Kubernetes 或 OpenShift 下运行的预构建容器中使用。
桌面模式
桌面模式基于 NWjs,它集成了 chromium 浏览器和 NodeJS,并管理 pgAdmin 的 Python 服务器,从而创建一个独立的应用程序。运行时启动 pgAdmin 服务器,并打开一个窗口来渲染用户界面。下面的架构图说明了 pgAdmin 服务器与 NWjs 的集成:
应用程序架构
下图显示了 pgAdmin 应用程序架构:
pgAdmin 服务器是使用 Flask 框架运行的 Python 应用程序的实例。它具有以下组件:
- SQLite Database
- SQLite数据库 - 这是用于存储所需信息的后端数据库,例如用户详细信息,服务器组,服务器,用户首选项等。 pgAdmin使用python ORM - SQLAlchemy - 来定义数据库表并对其执行操作。Flask-Migrate 软件包用于维护数据库版本。模型定义可在“…/pgadmin/models/init.py’ 在 pgAdmin 源代码中。
- pgAdmin Web Application
- pgAdmin Web Application - Apache HTTPD服务器(通常简称为Web服务器)通常与mod_wsgi一起使用,以托管pgAdmin的用户界面和Web API,尽管也可以将WSGI运行器(如Gunicorn或uWSGI)与其他Web服务器一起使用。在桌面模式下,使用Flask的内部Werkzeug服务器。
该应用程序使用_Flask框架实现,并使用__psycopg2_驱动程序与数据库服务器通信。Jinja 模板与版本控制系统一起为特定数据库服务器定位模板的正确版本,用于生成动态 SQL 查询以检查和修改数据库。
pgAdmin 实现了模块化的代码结构。每个模块都是一个文件夹,其中包含:
- 编写 Python 代码的“init.py”。
- 包含 javascript,css 文件和图像的静态文件夹。
- templates 文件夹包含.sql文件,用于生成动态 sql 查询以在数据库服务器上执行所需的操作。
- tests 文件夹包含相应模块的单元测试用例。
代码结构的核心遵循相同的 Postgres 数据库对象层次结构,例如服务器组>服务器>数据库>模式>表>列。
一些重要的附加模块是:
Authentication 认证
pgAdmin 支持多种第三方身份验证方法,如 Kerberos、LDAP 和 OAuth2。该模块包含一个特定于方法的 python 文件,其中包含使用第三方提供的相应身份验证机制验证用户的代码。
Tools 工具
pgAdmin 提供了不同的工具,这些工具为 postgres 提供的命令行实用程序提供用户界面,如备份、还原、维护等。这些模块通过pgAdmin用户界面从用户那里获取输入,并将这些操作作为后台进程执行。
bgprocess BG流程
此模块提供实用程序功能来管理和通知用户有关长时间运行的后台进程(如备份)。它通过python使用操作系统级实用程序生成子进程并监视它们。进程记录器捕获并记录来自子进程的 stdout 和 stderr 消息。
Cloud 云
该模块使用 boto3 等客户端库来连接云提供商并在云中配置 postgres 实例。
用户界面
用户界面是在Javascript和Backbone Javascript框架中实现的,目前正在迁移到React js。webpack 实用程序用于在安装程序附带之前加载和捆绑 CSS、Javascript 文件。捆绑的javascript模块提高了性能和加载速度,因为不需要逐个获取javascript。
webpack 功能“代码拆分”仅由 pgAdmin 用于加载必要的脚本。这些块分为四类:
- vendor.main
- vendor.others
- browser_nodes
- pgadmin_common
pgAdmin 应用程序为 PostgreSQL 和 EDB Postgres Advanced Server 数据库服务器提供管理功能。pgAdmin架构以模块化方式设计,使pgAdmin易于理解,并且可以灵活地进行修改和维护。
以上架构简介部分资料引用自:
原文标题:pgAdmin 4 Architecture
原文作者:Yogesh Mahajan
原文地址:https://www.enterprisedb.com/blog/pgadmin-4-architecture
2.2 pgAdmin 4 的简单使用
在菜单栏找到客户端工具pgAdmin 4,点击打开
正在启动,稍等片刻
点击 左侧边栏的 Servers ,弹出连接服务器 窗口,
输入在安装时设置的密码:123456
并勾选 Save Password,保存密码,免得以后再次输入。
输入完成后,点击OK,连接到 PostgreSQL 服务器
可以查看整个数据库的会话、进程、事务、I/O等信息,并且以图形化展示
3. 常用的 PostgreSQL 命令
psql.exe是 PostgreSQL 安装目录bin下的一个EXE可执行程序,
我们可以使用这个命令来连接到 PostgreSQL 进行数据库操作。
打开cmd窗口,定位到 PostgreSQL 安装目录,输入命令
cd C:\Program Files\PostgreSQL\15\bin
psql.exe -h localhost -p 5432 -U postgres
我们来看看一些常用的命令:
-
\q:退出psql.exe
-
\c :查看当前连接的数据库和用户
- \l 或 \l+:显示所有的数据库
- \db:列出所有表空间
- \dn: 显示所有的架构模式
- \du:查看所有的用户
- 执行SQL语句: 查询当前数据库信息(psql中可以执行sql语句 )
select current_database();
- 执行SQL语句: 创建表
CREATE TABLE users (id SERIAL PRIMARY KEY,name VARCHAR(50) NOT NULL,email VARCHAR(50) UNIQUE NOT NULL,password VARCHAR(50) NOT NULL);
这个例子创建了一个名为“users”的表,它有四个列:id、name、email和password。
其中,id是一个自增的主键,name和email是必填的字符串,password是必填的字符串。
- 查看该表的结构和描述信息。 \d 命令
在 PostgreSQL 命令行中输入 \d 表名,即可查看该表的结构和描述信息。
\d 表名
- \dt: 显示当前数据库所有的表
4. 配置 PostgreSQL 允许远程访问
安装完成后,PostgreSQL 的默认安装配置通常会禁止远程连接以增强安全性(MySQL也是如此)。
这是出于安全考虑的一种良好实践,因为如果不妥善配置远程连接,可能会导致潜在的安全风险和数据泄露风险,且容易遭到黑客入侵。
要允许远程连接到 PostgreSQL 数据库,你需要采取以下步骤:
1)、编辑 PostgreSQL 配置文件:
打开 PostgreSQL 的配置文件,通常位于
/etc/postgresql/15/main/pg_hba.conf(Linux平台)
C:\Program Files\PostgreSQL\15\data\pg_hba.conf(Windows平台)
请确保你具有适当的权限来编辑此文件。
2)、配置访问规则:
在 pg_hba.conf 文件中,你需要在 # IPv4 local connections: 条目下添加一条允许远程连接的规则。规则的格式通常如下所示:
# IPv4 local connections:
host database user IP地址/子网掩码 认证方法
- host:表示规则类型,用于允许远程主机连接。
- database:要允许连接的数据库名称。
- user:允许连接的数据库用户。
- IP地址/子网掩码:允许连接的远程主机的IP地址或IP地址范围。你可以使用 0.0.0.0/0 来表示所有IP地址,但这不是推荐做法,应该尽量限制访问。
- 认证方法:15.4 通常使用 scram-sha-256 作为认证方法。
例如,如果要允许用户 “myuser” 从远程主机 “192.168.1.100” 连接到数据库 “mydb”,可以添加以下规则:
# IPv4 local connections:
host mydb myuser 192.168.1.100/32 scram-sha-256
如果需要开放所有用户从所有远程主机连接到 PostgreSQL 数据库,你可以在 pg_hba.conf 文件中添加以下规则:
# IPv4 local connections:
host all all 0.0.0.0/0 scram-sha-256
这条规则允许所有数据库用户 (all) 从任何远程主机 (0.0.0.0/0 表示所有IP地址) 进行连接,使用 scram-sha-256 认证方法。
然而,这种配置非常不安全,因为它打开了数据库服务器的所有端口,允许任何人连接到数据库。只有在非常严格的安全环境下,才应该考虑这样配置。
添加完成后保存下,不用重启服务,即刻生效:
5、修改postgresql的连接端口和最大并发数
要修改 PostgreSQL 数据库的连接端口和最大并发连接数,你需要编辑 PostgreSQL 的配置文件 postgresql.conf
5.1 修改连接端口(postgresql.conf)
打开 postgresql.conf 文件,通常位于 PostgreSQL 数据目录下。
在 Linux 上,通常位于 /etc/postgresql/15/main/postgresql.conf
而在 Windows 上,通常位于 C:\Program Files\PostgreSQL\15\data\postgresql.conf
查找 port 配置项。默认情况下,它通常设置为 5432。你可以将其更改为任何你想要的端口号,只要确保它不与其他应用程序使用的端口冲突。
保存文件并关闭。
5.2 修改最大并发连接数(postgresql.conf)
打开 postgresql.conf 文件,如前面所述。
查找 max_connections 配置项。默认情况下,它通常设置为 100。你可以将其更改为你想要的最大并发连接数。
请注意,增加最大并发连接数会增加数据库服务器的资源消耗,所以要谨慎设置这个值。
保存文件并关闭。
5.3 重启 PostgreSQL 服务
完成上述更改后,你需要重新启动 PostgreSQL 服务以使更改生效。
在 Linux 上,你可以使用以下命令重启 PostgreSQL 服务:
sudo service postgresql restart
在 Windows 上,你可以在服务管理器中找到 PostgreSQL 服务,右键点击并选择重新启动。
重新加载配置(可选)
在重新启动 PostgreSQL 服务之前,你还可以选择执行配置文件的重新加载,以避免中断数据库连接。要执行配置文件的重新加载,可以使用以下命令:
在 Linux 上:
sudo service postgresql reload
在 Windows 上:
打开服务管理器。
找到 PostgreSQL 服务,右键点击并选择 “重新加载”(Reload)。
这将使配置更改立即生效,而不需要完全重新启动数据库服务。
请注意,修改 PostgreSQL 配置文件是一项敏感操作,要小心谨慎。确保你对配置文件的更改是正确的,以避免意外中断数据库的正常运行。如果有任何疑虑,最好在进行更改之前备份配置文件。
6、查询当前数据库的版本
show server_version;
或者在CMD命令窗口直接使用以下命令:
psql.exe --version
END.