环境:
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,或者使用其他相应的命令(如 stop
、restart
)来控制 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
文件:
①使用其他文本编辑器:
尝试使用其他可用的文本编辑器,如 nano
或 vi
。这些编辑器通常在大多数 Linux 发行版中都预装了。你可以尝试运行以下命令:
nano /var/lib/pgsql/14/data/postgresql.conf
或
vi /var/lib/pgsql/14/data/postgresql.conf
这样就可以 nano
或 vi
编辑器打开 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_addresses
是 postgresql.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_addresses
和 port
参数。这些参数分别指定了服务器监听的主机地址和端口号。
sudo vim /var/lib/pgsql/14/data/postgresql.conf
在文件中搜索 listen_addresses
和 port
,记下它们的值。
②检查身份验证配置文件:打开 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 查询语句和关键字,如 SELECT
、FROM
、WHERE
、GROUP BY
、ORDER 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