Centos7安装PostgreSQL 14

news2025/3/11 6:29:16

环境:

Centos7安装PostgreSQL_14版本数据库;

打开官方网站:PostgreSQL: Linux downloads (Red Hat family)

一、 版本选择

复制、粘贴并运行如下脚本:

二、安装步骤

这些命令是在 CentOS 7.x 系统上安装和配置 PostgreSQL 14 的步骤:

①这个命令将下载并安装 PostgreSQL 官方的 YUM 存储库,以便从中获取 PostgreSQL 相关的软件包。

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

 

② 这个命令用于安装 PostgreSQL 14 服务器软件包。它会自动解决依赖关系并安装必要的组件。

sudo yum install -y postgresql14-server

③这个命令将初始化 PostgreSQL 14 数据库集群。它会创建数据库和相关的文件结构,并设置默认的用户和权限等信息。

sudo /usr/pgsql-14/bin/postgresql-14-setup initdb

 

④这个命令将设置 PostgreSQL 14 在系统启动时自动启动。这样,在系统重启后,PostgreSQL 14 将自动启动。

sudo systemctl enable postgresql-14

⑤这个命令将启动 PostgreSQL 14 服务器。你可以使用这个命令来手动启动 PostgreSQL 14,或者使用其他相应的命令(如 stoprestart)来控制 PostgreSQL 14 服务器的运行状态。 

sudo systemctl start postgresql-14

⑥验证 PostgreSQL 14 是否成功安装和运行,这个命令会显示 PostgreSQL 14 服务器的状态信息。如果服务器正在运行,你将看到类似 "active (running)" 的输出。

sudo systemctl status postgresql-14

提示:

在虚拟机的 CentOS 7 中,可以使用以下方法将命令从主机系统粘贴到虚拟机中:

  • 1. 使用终端工具:打开虚拟机中的终端(如 GNOME 终端、Konsole 等),右键单击并选择 "Paste" 或按下 `Ctrl+Shift+V` 键盘快捷键来粘贴命令。
  • 2. 使用 SSH 连接:如果你是通过 SSH 连接到虚拟机,你可以在 SSH 客户端中直接使用命令行复制和粘贴的功能。例如,使用 PuTTY 或 OpenSSH 连接到虚拟机,在 SSH 客户端的窗口中,右键单击即可粘贴命令。
  • 3. 使用共享剪贴板:某些虚拟化软件(如 VirtualBox、VMware)提供了共享剪贴板功能,允许你在主机和虚拟机之间共享剪贴板内容。确保在虚拟化软件的设置中启用了此功能,并使用相应的快捷键将命令从主机粘贴到虚拟机中。

无论选择哪种方法,请确保在粘贴命令之前,终端处于准备接收输入的状态,例如等待命令提示符。这样,粘贴的命令才能正确执行。

请记住,在虚拟机中运行命令时要谨慎,确保你理解命令的作用及其对系统的影响。

同时也可以使用 Xshell 连接到 CentOS 7 的虚拟机,并在其中安装和配置 PostgreSQL 14。

三、切换用户

切换到postgres用户

su - postgres

-bash-4.2$ psql这个命令是用于启动 PostgreSQL 的交互式命令行工具,可以与 PostgreSQL 数据库进行交互和执行 SQL 查询。

输入 psql 

-bash-4.2$ psql

正常情况下,当运行 psql 命令时,它会连接到本地默认的 PostgreSQL 服务器,并进入一个新的交互式会话。 如果你已经成功安装和配置了 PostgreSQL,并且正在使用默认的设置,那么你应该能够看到如下所示的输出: 

 

在提示符 postgres=# 下,可以输入 SQL 命令、执行查询和管理数据库等操作。 

修改系统用户密码:

ALTER USER postgres WITH PASSWORD 'postgres';

如果要从 `psql` 终端退出,有几种方法可以尝试:

1. 使用键盘组合键:按下 `Ctrl + D` 或输入 `\q` 然后按下回车键。这将关闭 `psql` 终端并退出到原始命令行提示符。

2. 使用 SQL 命令:在 `psql` 终端中,输入 `\q` 并按下回车键即可退出。

3. 使用系统终端命令:如果你发现无法使用 `psql` 终端的键盘组合键或命令,可以尝试以下操作:

① - 按下 `Ctrl + C` 中断当前操作(如果有)。 

② - 输入 `\!` 并按下回车键,以使 `psql` 终端进入外壳模式。 

③- 在外壳模式下,输入 `exit` 或 `logout` 并按下回车键来退出 `psql` 终端。

④- 如果以上方法仍然不起作用,可以直接关闭终端窗口或使用操作系统提供的其他方法来结束 `psql` 终端。

四、修改配置

要修改配置文件,需要以具有足够权限的用户身份执行操作。在 CentOS 7 上,默认情况下,PostgreSQL 数据库的数据目录的所有者和组都是 postgres 用户。因此,需要使用 root 或具有适当权限的用户登录到系统,并以 postgres 用户的身份来编辑 postgresql.conf 文件。

4.1.修改postgresql.conf

`postgresql.conf` 是 PostgreSQL 数据库的主要配置文件,其中包含许多不同的配置选项。以下是一些常见的 `postgresql.conf` 配置选项及其功能的示例:

  • 1. `listen_addresses`:指定 PostgreSQL 服务器监听的 IP 地址。默认情况下,它设置为 `'localhost'`,仅允许本地连接。你可以将其修改为适当的 IP 地址以允许远程连接。
  • 2. `port`:指定 PostgreSQL 服务器监听的端口号。默认值为 `5432`,通常无需更改。如果需要使用其他端口,请在此处进行修改。
  • 3. `max_connections`:指定 PostgreSQL 允许的最大并发连接数。默认值为 `100`。根据系统资源和需求,你可以增加或减少此值。
  • 4. `shared_buffers`:指定用于缓存数据页的共享内存大小。默认值取决于系统,但通常为 `128MB`。根据系统资源和工作负载,可以调整此值以提高性能。
  • 5. `work_mem`:指定每个排序操作或哈希表的内存量。默认值为 `4MB`。根据查询的复杂性和系统资源,你可以增加或减少此值。
  • 6. `effective_cache_size`:指定 PostgreSQL 估计系统可用的磁盘缓存大小。默认值为空,表示自动检测。你可以手动设置此值以更好地优化查询性能。
  • 7. `log_timezone` 和 `timezone`:分别指定日志记录时使用的时区和数据库服务器的时区。
  • 8. `logging_collector`:启用或禁用日志收集器。当启用时,PostgreSQL 将日志信息写入到日志文件中,便于故障排除和监视。

这里只是 `postgresql.conf` 中的一小部分配置选项示例。该文件还包含其他许多选项,用于配置各种数据库行为、性能参数、安全性选项等。

注意:

对于任何更改,你都应该谨慎,并确保了解其影响和可能的后果。在修改 `postgresql.conf` 之前,建议先备份原始配置文件,并参考 PostgreSQL 的官方文档以获取更详细的说明和指导。

4.1.1操作步骤 

①以 root 用户登录到虚拟机或系统中。

②切换到 postgres 用户:运行以下命令:

su - postgres

③进入 PostgreSQL 数据目录:运行以下命令: 

cd /var/lib/pgsql/14/data/

④使用 vim 编辑器打开 postgresql.conf 文件:运行以下命令: 

vim postgresql.conf

⑤在 Vim 编辑器中,按下 i 进入插入模式,对文件进行修改。

⑥完成修改后,按下 Esc 键退出插入模式。

⑦输入 :wq 并按下回车键保存修改并退出 Vim 编辑器。

通过以上步骤,你将使用 postgres 用户的身份编辑 postgresql.conf 文件,并确保保存了你的修改。请注意,这是一种常见的方法,但如果你的设置和权限不同,可能会有所变化。根据你的环境和配置,你可能需要相应地调整上述步骤。

提示:

如果在你的系统上未找到 vim 命令,可能是因为你的系统中没有安装 Vim 编辑器。在 CentOS 7 上,默认情况下,vim 命令未预装。 

假如你的vim 命令未安装,可以尝试以下方法来编辑 postgresql.conf 文件:

①使用其他文本编辑器:

尝试使用其他可用的文本编辑器,如 nanovi。这些编辑器通常在大多数 Linux 发行版中都预装了。你可以尝试运行以下命令: 

nano /var/lib/pgsql/14/data/postgresql.conf
或
vi /var/lib/pgsql/14/data/postgresql.conf

这样就可以 nanovi 编辑器打开 postgresql.conf 文件。 

②安装 Vim 编辑器:

如果你希望使用 Vim 编辑器,你可以尝试安装它。在 CentOS 7 上,你可以使用以下命令进行安装:

sudo yum install vim-enhanced

 

最后安装完成: 

安装完成后,你可以再次尝试使用 vim 命令打开 postgresql.conf 文件。 

开启远程访问,将listen_address 修改为 * ,端口号可改可不改:

将 PostgreSQL 的 `listen_address` 配置修改为 `*` 意味着服务器将监听所有可用的网络接口(IP 地址)。这样配置可以使 PostgreSQL 服务器对来自任何网络接口的连接请求进行处理。

通常情况下,PostgreSQL 的 `listen_address` 默认设置为 `localhost` 或 `127.0.0.1`,只允许本地连接。这是出于安全性考虑,以防止未经授权的远程连接。但如果你希望从外部网络连接到 PostgreSQL 服务器,就需要将 `listen_address` 修改为 `*`,以允许任意 IP 地址的连接请求。

注意:

将 `listen_address` 设置为 `*` 可能会增加一些安全风险,因为它打开了服务器对所有网络接口的监听。建议仅在必要时才采取此操作,并确保采取适当的安全措施,例如使用防火墙、限制访问和强密码等。

在更改 `listen_address` 配置之前,请务必评估潜在的安全影响,并确保已经实施了适当的安全措施来保护 PostgreSQL 服务器和数据。

 如果你在编辑 postgresql.conf 文件时找不到 listen_address 配置选项,这可能是因为实际配置文件中没有这个选项或该选项位于其他部分。

在 PostgreSQL 的默认安装中,listen_addressespostgresql.conf 中的一个常见配置选项,用于指定服务器监听的 IP 地址。但并非所有的 postgresql.conf 文件都会包含此选项。

要添加或修改 listen_addresses 选项,请按照以下步骤进行操作:

①打开 postgresql.conf 文件:

vim postgresql.conf

②在 Vim 编辑器中搜索 listen_addresses按下 / 键然后输入 listen_addresses 进行搜索

③如果找到了 listen_addresses 配置选项,请确保其前面没有被注释掉(没有以 # 开头)。如果被注释掉了,请将注释符号 # 删除,并在需要的地方设置适当的 IP 地址。

④如果未找到 listen_addresses 配置选项,你可以手动添加它。在文件的末尾添加以下行:

listen_addresses = 'your_ip_address'

 将 'your_ip_address' 替换为你想要 PostgreSQL 服务器监听的实际 IP 地址。

 ⑤保存文件并退出 Vim 编辑器:在命令模式下按下 Esc 键,然后输入 :wq 并按下回车键。

4.2.修改pg_hba.conf 

在这个文件中,你可以配置 PostgreSQL 服务器的客户端认证规则。当你运行如下命令后,Vim 编辑器将打开 pg_hba.conf 文件,并显示其内容供你编辑。你可以使用 Vim 的编辑命令对文件进行修改,例如添加或更改认证规则、控制客户端访问权限等。

vim /var/lib/pgsql/14/data/pg_hba.conf

在文件末尾增加如下配置:

host    all             all             0.0.0.0/0            scram-sha-256

pg_hba.conf 文件中,添加一条身份验证规则。这条规则的含义是允许来自任何 IP 地址的所有用户使用 scram-sha-256 认证方法连接到 PostgreSQL 14 服务器。 

其中各字段的含义为:

  • host:规则类型,表示基于主机的认证规则。
  • all:数据库名(或用户名),表示适用于所有数据库和所有用户。
  • all:认证条件,表示适用于所有用户。
  • 0.0.0.0/0:地址范围,表示接受来自任意 IP 地址的连接请求。
  • scram-sha-256:认证方法,表示使用 scram-sha-256 方法进行身份验证。

这个设置将允许任何 IP 地址的用户使用 scram-sha-256 认证方法连接到 PostgreSQL 14 服务器。

注意:

使用 0.0.0.0/0 范围的设置可能存在安全风险,因为它允许任意 IP 地址的连接。在生产环境中,请谨慎选择适当的地址范围并使用更安全的认证方法。

完成修改后,保存并退出 pg_hba.conf 文件。然后重新加载或重启 PostgreSQL 14 服务,使新的身份验证规则生效。重启服务:

sudo systemctl restart postgresql-14

这个时候如果你还想用 su - postgres 这种方式进入命令行模式可能是不能进入的,可以尝试使用如下命令:

psql -U postgres -h 127.0.0.1 --port 5432

在执行该命令后,你将被提示输入密码以进行身份验证。输入正确的密码后,psql 将连接到 PostgreSQL 14 数据库,并显示类似以下的输出:

psql (版本号)
输入 "help" 来获取帮助信息。

确认连接成功后,你可以开始在 psql 终端中执行 SQL 查询和命令。例如,你可以使用 \l 命令查看当前数据库的列表,使用 \dt 查看当前数据库中的所有表等。

4.2.1查找主机地址和端口号

执行上面命令时如何知道主机地址和端口号,可以执行以下步骤:

①检查 PostgreSQL 14 服务器的配置文件:打开 postgresql.conf 文件并查找 listen_addressesport 参数。这些参数分别指定了服务器监听的主机地址和端口号。

sudo vim /var/lib/pgsql/14/data/postgresql.conf

 在文件中搜索 listen_addressesport,记下它们的值。

②检查身份验证配置文件:打开 pg_hba.conf 文件并查找适用于 postgres 用户的认证规则。在这个规则中,你可以找到连接时使用的主机地址和端口号。

sudo vim /var/lib/pgsql/14/data/pg_hba.conf

找到包含 postgres 用户的规则行,并查看其中的主机地址和端口号。

③查看系统日志文件:如果你已经启动了 PostgreSQL 14 服务器,可以查看系统日志文件以获取有关主机地址和端口号的信息。

sudo tail -f /var/lib/pgsql/14/data/pg_log/postgresql-*.log

在日志文件中搜索类似于 "listening on" 或 "database system is ready to accept connections" 的消息,其中会显示服务器正在监听的主机地址和端口号。

在绝大多数情况下,上述三种方法得到的主机地址和端口号应该是一致的。因为 PostgreSQL 的主配置文件 postgresql.conf 和身份验证配置文件 pg_hba.conf 中都包含了服务器的监听地址和端口信息。

这两个配置文件通常指定了服务器监听的主机地址和端口号。主配置文件中的 listen_addresses 参数指定了服务器监听的主机地址,而 port 参数指定了服务器监听的端口号。而身份验证配置文件 pg_hba.conf 则指定了允许连接的主机地址和端口号。

因此,如果你在这两个文件中找到的地址和端口号是相同的,那么这个地址和端口号就是用于连接到 PostgreSQL 14 服务器的正确参数。

然而,仍然有可能存在某些特殊情况,例如在配置文件中进行了手动修改但未重启服务器的情况下,地址和端口号可能会不一致。因此,在使用时请务必确保准确地查找并使用正确的主机地址和端口号来连接到 PostgreSQL 14 服务器。

按照上面的步骤就已经成功安装配置PostgreSQL 14,接下来就可以在PostgreSQL 14 数据库中查询数据。

①打开终端并登录到 CentOS 7 服务器上。

②使用以下命令连接到 PostgreSQL 数据库:

psql -U your_username -d your_database

your_username 替换为你的数据库用户名,将 your_database 替换为你要连接的数据库名称。根据需要,可能需要提供密码或其他验证信息。

③成功连接到数据库后,你会看到命令提示符变为 your_database=#,表示你现在处于 PostgreSQL 数据库的交互式命令行界面。

④在命令提示符下,你可以输入 SQL 查询语句来执行各种数据库查询操作。例如,要查询表中的所有数据,可以使用以下命令:

SELECT * FROM your_table;

your_table 替换为你想要查询的实际表名。

⑤根据你的查询需求,你可以使用其他 SQL 查询语句和关键字,如 SELECTFROMWHEREGROUP BYORDER BY 等等。 

⑥当完成查询后,你可以使用 \q 命令退出 PostgreSQL 数据库的交互式命令行界面。

五、常用命令

--显示所有已创建的数据库列表,包括名称、所有者、编码等详细信息。
\l  

--查看特定数据库中的表和用户,请首先切换到该数据库
\c your_database

--列出所有表:
\dt

--查看当前数据库中的所有用户
SELECT * FROM pg_user;


--使用 psql 命令以超级用户身份连接到 PostgreSQL 14,然后连接到默认数据库:
psql -U postgres


--更新系统软件包,确保 CentOS 7 系统处于最新状态
sudo yum update


--初始化 PostgreSQL 数据库:
sudo postgresql-setup initdb

--启动 PostgreSQL 服务:
sudo systemctl start postgresql-14


--验证 PostgreSQL 14 服务器是否已成功重新启动:(看到类似 "active (running)" 的输出)
sudo systemctl status postgresql-14

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1197775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习范式】监督学习,无监督学习,强化学习, 半监督学习,自监督学习,迁移学习,对比分析+详解与示例代码

目录 1. 监督学习 (Supervised Learning): 2. 无监督学习 (Unsupervised Learning): 3. 强化学习 (Reinforcement Learning): 4. 半监督学习 (Semi-Supervised Learning): 5. 自监督学习 (Self-Supervised Learning): 6. 迁移学习 (Transfer Learning): 7 机器学习范式应…

Java编程--synchronized/死锁/可重入锁/内存可见性问题/wait()、notify()

前言 逆水行舟,不进则退!!! 目录 线程安全 synchronized原子锁 可重入锁(递归锁) 死锁 内存可见性问题 wait()、notify() 线程安全 线程安全是指在多线程环境下,程序的行为表现仍然符合我…

华为ensp:静态默认路由

静态路由 到r2 上的系统视图模式 下一跳为1.1.1.2 ip route-static 192.168.2.0 255.255.255.0 1.1.1.2 如果找2网段下一跳为1.1.1.2接口 默认路由 到r3上做的是默认路由 ip route-static 0.0.0.0 0 1.1.1.1 所有的流量去找1.1.1.1 查看效果 只要做完完整的路由就可…

HIKVISION流媒体管理服务器后台任意文件读取漏洞

默认账号密码为 admin/12345 构造payload /systemLog/downFile.php?fileName../../../../../../../../../../../../../../../windows/system.ini漏洞证明 文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。 免责声明:由于传播…

无需标注海量数据,目标检测新范式OVD

当前大火的多模态GPT-4在视觉能力上只具备目标识别的能力,还无法完成更高难度的目标检测任务。而识别出图像或视频中物体的类别、位置和大小信息,是现实生产中众多人工智能应用的关键,例如自动驾驶中的行人车辆识别、安防监控应用中的人脸锁定…

若依如何进行页面路由跳转,路由跳转时如何携带参数(超详细图文教程)

我们经常会有这样需求,当我们在一个页面时,想要跳转到另一个页面,但是跳转的同时还需要携带参数。那么这种情况在若依系统中该如何做呢,下面我们来说一下。 文章目录 问题提出:一、创建目标页面的路由(也就是图2的路由…

C语言--有3个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果。

一.解体思路 设一个结构体数组,数组中包含3个元素; 每个元素中的信息应包括候选人的姓名和得票数;输入被选人的姓名,然后与数组元素中的“姓名”成员比较,如果相同,就给这个元素中的“得票数”成 员的值加1;输出所有元素的信息。 …

win下安卓打包指南

win下安卓打包指南 0、缘起 换了台电脑竟然忘了怎么打包,还好有笔记,用软件打包也挺好,但是我感觉用 命令行 更有操作感,分享下。 1、下载并配置apktool(放在C://Windows无需配置环境变量,需要java环境&…

【算法练习Day45】最长公共子序列不相交的线最大子数组和

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 最长公共子序列不相交的线最…

Linux输入与输出设备的管理

计算机系统中CPU 并不直接和设备打交道,它们中间有一个叫作设备控制器(Device Control Unit)的组件,例如硬盘有磁盘控制器、USB 有 USB 控制器、显示器有视频控制器等。这些控制器就像代理商一样,它们知道如何应对硬盘…

如何在 Windows 11 上恢复丢失的文件?(4种方法)

在 Windows 11 设备上丢失重要文件感觉就像一场噩梦。这是您希望时光倒流并撤消意外删除或避免那些意外的系统故障的时刻之一。这种情况带来的挫败感和焦虑感简直难以承受。但是,嘿,不要绝望!我们随时为您提供帮助。 在这本真诚的指南中&…

CA 陪你看 Ignite | 聚焦 Microsoft Ignite 2023

点击蓝字 关注我们 编辑:Alan Wang 排版:Rani Sun 微软 Reactor 为帮助广开发者,技术爱好者,更好的学习 .NET Core, C#, Python,数据科学,机器学习,AI,区块链, IoT 等技术&#xff0…

android studio 修改图标

Android Studio 修改图标 简介 Android Studio 是一款由谷歌推出的用于开发 Android 应用程序的集成开发环境(IDE)。在开发过程中,我们可以根据自己的需求修改 Android Studio 的图标,以个性化我们的开发环境。 本文将介绍如何在…

XC1010非隔离型、低成本的PWM功率开关、AC-DC 220V转5V 200mA小电流芯片

XC1010是一款非隔离型、高集成度且低成本的PWM功率开关,适用于降压型和升降压型电路。 XC1010采用高压单晶圆工艺,在同一片晶圆上集成有 500V 高压 MOSFET 和采用开关式峰值电流模式控制的控制器。在全电压输入的范围内可以保证高精度的 5V 默认…

LoRAShear:微软在LLM修剪和知识恢复方面的最新研究

LoRAShear是微软为优化语言模型模型(llm)和保存知识而开发的一种新方法。它可以进行结构性修剪,减少计算需求并提高效率。 LHSPG技术( Lora Half-Space Projected Gradient)支持渐进式结构化剪枝和动态知识恢复。可以通过依赖图分析和稀疏度…

【3】Gradle-快速入门使用【Gradle概念】

目录 【3】Gradle-快速入门使用【Gradle概念】Gradle任务查看可用任务了解任务探索任务依赖性 依赖关系了解传递依赖关系查看项目依赖项添加版本目录 【可选】 插件使用插件查看插件提供的任务配置插件 增量构建启用缓存使用构建缓存步骤总结 个人主页: 【⭐️个人主页】 需要您…

【tg】 5 :线程切换

manager 可以切到 其他类的其他线程去执行。线程切换 先通过 networkmgr 线程 执行 ,但是传递了Manager 自己的线程 进去。在networkmgr 的network线程中,获取到stats数据,然后扔给 manager的线程thread ,去posttask 还行这个task里调用了mediamanager 的perform ,在media…

研究方法——案例研究设计与方法

作者:罗伯特K.殷 (一)计划:如何把握何处、何时用案例研究方法 1.问题: 按照作者的观点,案例研究1984年之后才逐渐得到重视,可是在数据信息有效收集的时代,几乎所有的经典都是以案例…

[西湖论剑 2022]real_ez_node

文章目录 前置知识EJS模板注入(CVE-2022-29078)原型链污染漏洞 (CVE-2021-25928)HTTP响应拆分攻击(CRLF) 解题过程代码审计构造payload 前置知识 EJS模板注入(CVE-2022-29078) EJS…

LeetCode18-四数之和

注意!其中nums数值的范围,四个加一起会导致INT溢出,long类型则是64位的整数,因此不会导致溢出,这也是本题难点之一! 大佬解法(拿捏offer的解法) 经过反复的代码比对和Debug,发现大佬解法的速度之快体现在足足7个if语句的剪枝,其中包括了2个关键性的去重的if语句以及2个关键性…