网站建设合同服务范围,网站做目录,单位建设网站用交印花税吗,服务器建站用哪个系统好PostgreSQL#xff0c;作为一款备受欢迎的开源关系数据库管理系统#xff08;RDBMS#xff09;#xff0c;已经存在了三十多年的历史。它提供了SQL语言支持#xff0c;用于管理数据库和执行CRUD操作#xff08;创建、读取、更新、删除#xff09;。
由于其卓越的健壮性…PostgreSQL作为一款备受欢迎的开源关系数据库管理系统RDBMS已经存在了三十多年的历史。它提供了SQL语言支持用于管理数据库和执行CRUD操作创建、读取、更新、删除。
由于其卓越的健壮性、灵活性和卓越性能PostgreSQL赢得了广泛的声誉成为众多Web网站和数据分析应用软件的首选数据存储解决方案。全球许多知名公司如Spotify、Instagram、Trivago、Uber和Netflix等都在广泛采用PostgreSQL。
CentOS 8/RHEL 8上正式维护的模块化存储库的PostgreSQL版本为13、12、10和9.6我们将添加PostgreSQL Yum Repository它包含所有最新版本。
其实PostgreSQL项目为最常见的发行版提供了所有支持版本的软件包存储库支持所有Red Hat系列如CentOS、Fedora、Scientific Linux、Oracle Linux和Red Hat Enterprise Linux。
目前PostgreSQL的主流稳定版本是15版本。在本文中我们将详细介绍在 CentOS 8 系统上安装PostgreSQL 15 版本的过程。
要在 CentOS 8 系统上安装PostgreSQL 15.4我们可以按照以下步骤进行操作 打开终端可以通过点击应用程序菜单然后搜索终端来打开终端或者使用 Xshell 远程连接到CentOS 8 服务器。 PostgreSQL在Appstream存储库中有不同版本。我们可以通过使用dnf软件包管理器启用首选软件包来进行选择。
要列出PostgreSQL的可用模块请运行以下命令
# dnf module list postgresql[rootpgserver ~]# dnf module list postgresql
上次元数据过期检查0:43:44 前执行于 2023年10月09日 星期一 13时22分39秒。
CentOS-8.5.2111 - AppStream - mirrors.aliyun.com
Name Stream Profiles Summary
postgresql 9.6 client, server [d] PostgreSQL server and client module
postgresql 10 [d] client, server [d] PostgreSQL server and client module
postgresql 12 client, server [d] PostgreSQL server and client module
postgresql 13 client, server [d] PostgreSQL server and client module 提示[d]默认[e]已启用[x]已禁用[i]已安装
[rootpgserver ~]# 从列出Postgresql的模块命令的输出中输出表明可以从AppStream存储库中下载四个版本分别是版本9.6、10、12、13。我们还可以看到默认版本为标记所指示的Postgresql 10[d]。
如果要安装默认的 Postgresql 10 可以直接通过运行以下命令来安装
# dnf install postgresql-server但是如果要安装PostgreSQL 15步骤会有所不同。
第一步添加PostgreSQL Yum存储库
Yum存储库是专门为 CentOS 和 RHEL 系列的Linux发行版提供支持的。
一旦成功添加该存储库将在整个受支持的 PostgreSQL 版本的生命周期内为我们的服务器系统提供自动更新的PostgreSQL软件包。
要完成此步骤我们需要执行以下详细的操作以将 PostgreSQL 软件包的存储库添加到我们的CentOS/RHEL 8 服务器中
# dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm[rootpgserver ~]# sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
上次元数据过期检查1:04:22 前执行于 2023年10月09日 星期一 13时22分39秒。
pgdg-redhat-repo-latest.noarch.rpm 8.3 kB/s | 13 kB 00:01
依赖关系解决。
软件包 架构 版本 仓库 大小安装:pgdg-redhat-repo noarch 42.0-35PGDG commandline 13 k事务概要安装 1 软件包总计13 k
安装大小15 k
确定吗[y/N] y
下载软件包
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务准备中 : 1/1 安装 : pgdg-redhat-repo-42.0-35PGDG.noarch 1/1 验证 : pgdg-redhat-repo-42.0-35PGDG.noarch 1/1 已安装:pgdg-redhat-repo-42.0-35PGDG.noarch 完毕
[rootpgserver ~]# 第二步在CentOS 8/RHEL 8上安装PostgreSQL
我们需要在CentOS 8上禁用PostgreSQL AppStream存储库CentOS 8 Linux包含其他版本的PostgreSQL。
# dnf -qy module disable postgresql[rootpgserver ~]# dnf -qy module disable postgresql
导入 GPG 公钥 0x442DF0F8:Userid: PostgreSQL RPM Building Project pgsql-pkg-yumpostgresql.org指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
导入 GPG 公钥 0x442DF0F8:Userid: PostgreSQL RPM Building Project pgsql-pkg-yumpostgresql.org指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
导入 GPG 公钥 0x442DF0F8:Userid: PostgreSQL RPM Building Project pgsql-pkg-yumpostgresql.org指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
导入 GPG 公钥 0x442DF0F8:Userid: PostgreSQL RPM Building Project pgsql-pkg-yumpostgresql.org指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
导入 GPG 公钥 0x442DF0F8:Userid: PostgreSQL RPM Building Project pgsql-pkg-yumpostgresql.org指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
导入 GPG 公钥 0x442DF0F8:Userid: PostgreSQL RPM Building Project pgsql-pkg-yumpostgresql.org指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
导入 GPG 公钥 0x442DF0F8:Userid: PostgreSQL RPM Building Project pgsql-pkg-yumpostgresql.org指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG 使用以下命令检查确认启用的存储库列表中是否包含有PostgreSQL 15。
# dnf repolist[rootpgserver ~]# dnf repolist
仓库 id 仓库名称
AppStream CentOS-8.5.2111 - AppStream - mirrors.aliyun.com
base CentOS-8.5.2111 - Base - mirrors.aliyun.com
extras CentOS-8.5.2111 - Extras - mirrors.aliyun.com
pgdg-common PostgreSQL common RPMs for RHEL / Rocky 8 - x86_64
pgdg11 PostgreSQL 11 for RHEL / Rocky 8 - x86_64
pgdg12 PostgreSQL 12 for RHEL / Rocky 8 - x86_64
pgdg13 PostgreSQL 13 for RHEL / Rocky 8 - x86_64
pgdg14 PostgreSQL 14 for RHEL / Rocky 8 - x86_64
pgdg15 PostgreSQL 15 for RHEL / Rocky 8 - x86_64
pgdg16 PostgreSQL 16 for RHEL / Rocky 8 - x86_64 使用以下命令检查存储库中是否有PostgreSQL 15软件包。
# yum search postgresql15[rootpgserver ~]# yum search postgresql15
上次元数据过期检查0:02:13 前执行于 2023年10月09日 星期一 15时56分22秒。名称 精准匹配postgresql15
postgresql15.x86_64 : PostgreSQL client programs and libraries名称 匹配postgresql15
postgresql15-contrib.x86_64 : Contributed source and binaries distributed with PostgreSQL
postgresql15-devel.x86_64 : PostgreSQL development header files and libraries
postgresql15-docs.x86_64 : Extra documentation for PostgreSQL
postgresql15-libs.x86_64 : The shared libraries required for any PostgreSQL clients
postgresql15-llvmjit.x86_64 : Just-in-time compilation support for PostgreSQL
postgresql15-odbc.x86_64 : PostgreSQL ODBC driver
postgresql15-plperl.x86_64 : The Perl procedural language for PostgreSQL
postgresql15-plpython3.x86_64 : The Python3 procedural language for PostgreSQL
postgresql15-pltcl.x86_64 : The Tcl procedural language for PostgreSQL
postgresql15-server.x86_64 : The programs needed to create and run a PostgreSQL server
postgresql15-tcl.x86_64 : A Tcl client library for PostgreSQL
postgresql15-test.x86_64 : The test suite distributed with PostgreSQL
[rootpgserver ~]# 现在在CentOS 8 上安装PostgreSQL 15软件包——服务器和客户端
# dnf install postgresql15 postgresql15-server这将安装PostgreSQL 数据库服务端和一些附加的功能模块。
[rootpgserver ~]# dnf install postgresql15 postgresql15-server
上次元数据过期检查0:09:13 前执行于 2023年10月09日 星期一 15时56分22秒。
依赖关系解决。
软件包 架构 版本 仓库 大小安装:postgresql15 x86_64 15.4-1PGDG.rhel8 pgdg15 1.6 Mpostgresql15-server x86_64 15.4-1PGDG.rhel8 pgdg15 5.9 M
安装依赖关系:postgresql15-libs x86_64 15.4-1PGDG.rhel8 pgdg15 293 k事务概要安装 3 软件包总下载7.8 M
安装大小33 M
确定吗[y/N] y
下载软件包
(1/3): postgresql15-libs-15.4-1PGDG.rhel8.x86_64.rpm 23 kB/s | 293 kB 00:12
(2/3): postgresql15-15.4-1PGDG.rhel8.x86_64.rpm 34 kB/s | 1.6 MB 00:48
(3/3): postgresql15-server-15.4-1PGDG.rhel8.x86_64.rpm 28 kB/s | 5.9 MB 03:34
------------------------------------------------------------------------------------------------------------------------------------------------------
总计 37 kB/s | 7.8 MB 03:34 安装过程中还需要GPG密钥存储库。
PostgreSQL 15 for RHEL / Rocky 8 - x86_64 1.6 MB/s | 1.7 kB 00:00
导入 GPG 公钥 0x442DF0F8:Userid: PostgreSQL RPM Building Project pgsql-pkg-yumpostgresql.org指纹: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8来自: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
确定吗[y/N] y
导入公钥成功
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务准备中 : 1/1 安装 : postgresql15-libs-15.4-1PGDG.rhel8.x86_64 1/3 运行脚本: postgresql15-libs-15.4-1PGDG.rhel8.x86_64 1/3 安装 : postgresql15-15.4-1PGDG.rhel8.x86_64 2/3 运行脚本: postgresql15-15.4-1PGDG.rhel8.x86_64 2/3 运行脚本: postgresql15-server-15.4-1PGDG.rhel8.x86_64 3/3 安装 : postgresql15-server-15.4-1PGDG.rhel8.x86_64 3/3 运行脚本: postgresql15-server-15.4-1PGDG.rhel8.x86_64 3/3
[/usr/lib/tmpfiles.d/pesign.conf:1] Line references path below legacy directory /var/run/, updating /var/run/pesign → /run/pesign; please update the tmpfiles.d/ drop-in file accordingly.验证 : postgresql15-15.4-1PGDG.rhel8.x86_64 1/3 验证 : postgresql15-libs-15.4-1PGDG.rhel8.x86_64 2/3 验证 : postgresql15-server-15.4-1PGDG.rhel8.x86_64 3/3 已安装:postgresql15-15.4-1PGDG.rhel8.x86_64 postgresql15-libs-15.4-1PGDG.rhel8.x86_64 postgresql15-server-15.4-1PGDG.rhel8.x86_64 完毕
[rootpgserver ~]#
安装 PostgreSQL 及其依赖项后使用以下 psql 命令验证其版本。
[rootpgserver ~]# psql -V
psql (PostgreSQL) 15.4
[rootpgserver ~]#
以上命令的输出显示系统上已经安装 PostgreSQL 15.4 。
第三步初始化并启动数据库服务
必须先进行PostgreSQL数据库初始化然后才能使用数据库服务器。
运行下面的命令初始化 PostgreSQL 数据库
/usr/pgsql-15/bin/postgresql-15-setup initdb[rootpgserver ~]# /usr/pgsql-15/bin/postgresql-15-setup initdb
Initializing database ... OK[rootpgserver ~]# 数据库的主要配置文件和存放路径在 /var/lib/pgsql/15/data/postgresql.conf
[rootpgserver ~]# ll /var/lib/pgsql/15/data/postgresql.conf
-rw-------. 1 postgres postgres 29459 10月 9 16:17 /var/lib/pgsql/15/data/postgresql.conf
启动PostgreSQL数据库服务器并将其设置为在启动时启动。
[rootpgserver ~]# systemctl enable --now postgresql-15
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql-15.service → /usr/lib/systemd/system/postgresql-15.service.
[rootpgserver ~]#
通常使用以下2条命令来启动并配置
systemctl start postgresql-15
systemctl enable postgresql-15也可以使用systemctl enable --now postgresql-15 这一条命令来替代以下两个命令
systemctl start postgresql-15 用于启动 PostgreSQL 15 服务。systemctl enable postgresql-15 用于设置 PostgreSQL 15 服务开机自启动。
systemctl enable --now postgresql-15 命令结合了这两个操作它会启动 PostgreSQL 15 服务并设置为开机自启动。这是一个更便捷的方式来同时执行这两个任务。
检查服务状态以确认它正在运行。
systemctl status postgresql-15[rootpgserver ~]# systemctl status postgresql-15
● postgresql-15.service - PostgreSQL 15 database serverLoaded: loaded (/usr/lib/systemd/system/postgresql-15.service; enabled; vendor preset: disabled)Active: active (running) since Mon 2023-10-09 16:25:49 CST; 55s agoDocs: https://www.postgresql.org/docs/15/static/Process: 17669 ExecStartPre/usr/pgsql-15/bin/postgresql-15-check-db-dir ${PGDATA} (codeexited, status0/SUCCESS)Main PID: 17675 (postmaster)Tasks: 7 (limit: 49189)Memory: 17.5MCGroup: /system.slice/postgresql-15.service├─17675 /usr/pgsql-15/bin/postmaster -D /var/lib/pgsql/15/data/├─17676 postgres: logger ├─17678 postgres: checkpointer ├─17679 postgres: background writer ├─17681 postgres: walwriter ├─17682 postgres: autovacuum launcher └─17683 postgres: logical replication launcher 10月 09 16:25:49 pgserver systemd[1]: Starting PostgreSQL 15 database server...
10月 09 16:25:49 pgserver postmaster[17675]: 2023-10-09 16:25:49.955 CST [17675] 日志: 日志输出重定向到日志收集进程
10月 09 16:25:49 pgserver postmaster[17675]: 2023-10-09 16:25:49.955 CST [17675] 提示: 后续的日志输出将出现在目录 log中.
10月 09 16:25:49 pgserver systemd[1]: Started PostgreSQL 15 database server.
[rootpgserver ~]# 可以看到PostgreSQL 服务已经激活运行。
第四步设定PostgreSQL管理员使用者的密码
默认情况下PostgreSQL数据库是不安全的可以轻松切换到 postgres 用户无需任何密码并开始使用 psql如下所示 因此部署完成后我们需要加强 PostgreSQL 数据库的安全性更新和修改 PostgreSQL 系统用户密码和数据库管理员密码。
默认情况下PostgreSQL没有设置密码您需要设置一个管理员密码。
运行以下命令替换your_password为您想要的密码
sudo -u postgres psql进入PostgreSQL命令行后执行以下命令来设置密码
ALTER USER postgres PASSWORD your_password;退出PostgreSQL命令行
\q或者按照以下方法进行修改。 1、使用 passwd 命令为 postgres 用户设置密码 2、使用 ALTER USER 数据库命令设置数据库管理员密码
$ passwd postgres
$ su – postgres
$ psql -c ALTER USER postgres WITH PASSWORD ‘xxxxxxxxxxx;第五步启用远程数据库连接
在默认情况下PostgreSQL安装完成后通常会限制只允许本地连接这是为了增加数据库的安全性。 这意味着只有在运行PostgreSQL服务器的本地机器上才能连接到数据库而其他计算机无法远程访问。
启用远程数据库连接可以增加数据库的灵活性允许其他计算机通过网络连接到数据库服务器从而可以在不同的计算机上访问和使用数据库。但是这也会增加一些安全风险因此在启用远程连接之前需要采取一些安全措施如
1. 访问控制 通过修改PostgreSQL的pg_hba.conf文件来限制哪些IP地址或主机可以连接到数据库。您可以配置白名单仅允许特定IP地址或主机访问数据库。
2. 防火墙规则 确保服务器上的防火墙规则允许外部计算机连接到PostgreSQL的端口默认为5432。
3. 安全性最佳实践 遵循数据库安全性最佳实践包括定期备份数据库、使用强密码、定期更新PostgreSQL和操作系统等。
在启用远程连接之前务必考虑安全性并采取适当的措施以确保您的数据库不受未经授权的访问或潜在的威胁。这样可以在提高灵活性的同时保护数据库的安全。
要启用远程数据库连接我们需要进行以下步骤 编辑pg_hba.conf文件 PostgreSQL使用pg_hba.conf文件来配置客户端的访问控制规则。我们需要编辑此文件以允许远程连接。使用文本编辑器如nano或vi打开该文件 vim /var/lib/pgsql/15/data/pg_hba.conf找到适当的位置添加一行规则以允许远程访问。例如要允许所有IP地址的远程访问可以添加以下行 host all all 0.0.0.0/0 md5这表示允许所有主机0.0.0.0/0连接到所有数据库all的所有用户all并要求使用密码验证md5。 请注意这将允许来自任何IP地址的连接因此请谨慎使用如果是在生产环境中建议更严格地限制可以访问数据库的 IP 地址。 配置postgresql.conf文件 PostgreSQL的postgresql.conf文件包含有关服务器配置的信息。确保该文件中的listen_addresses设置为允许远程连接。使用文本编辑器打开该文件 vim /var/lib/pgsql/15/data/postgresql.conf确保以下行没有被注释掉去掉前面注释的# 然后将“侦听地址”设置为服务器IP地址或所有接口的“ * ”。 listen_addresses *这将允许服务器开放监听所有可用的网络接口。 重新启动PostgreSQL 使上述更改生效重新启动PostgreSQL服务 sudo systemctl restart postgresql-15防火墙规则 确保我们的服务器防火墙允许远程连接到PostgreSQL的端口默认端口为 5432。具体规则可能因您的防火墙管理工具而异。您可以使用firewall-cmd或iptables来配置规则。 测试远程连接 使用远程计算机上的PostgreSQL客户端工具连接到您的PostgreSQL服务器以测试远程连接。确保使用正确的IP地址、用户名和密码。
$ psql -U dbuser -h serverip -p 5432 dbname请注意启用远程连接会增加潜在的安全风险因此应采取适当的安全措施例如限制允许连接的IP地址使用强密码定期更新PostgreSQL和操作系统等以确保数据库的安全性。
现在我们已经成功在CentOS 8 系统上安装并配置了PostgreSQL 15.4。我们可以使用psql命令行工具或其他PostgreSQL客户端连接到数据库并开始使用它。如果需要的话还可以安装其他PostgreSQL扩展和工具。
最后建议安装pgAdmin 4来管理PostgreSQL 15数据库 pgAdmin是领先的开源功能丰富的PostgreSQL管理和开发平台可在LinuxUnixMac OS X和Windows上运行。
具体安装方法将在下一篇文章中介绍。