这是安装pg14最新版本的步骤
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql14-server
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14
安装完默认配置
postgres用户家目录:/var/lib/pgsql
数据库软件包安装文件位于 /usr/pgsql-14 目录下。
数据目录位于 /var/lib/pgsql/14/data 下。
配置文件位于 /var/lib/pgsql/14/data/postgresql.conf。此文件包含许多 PostgreSQL 配置参数,例如 max_connections、shared_buffers 等。
认证配置文件位于 /var/lib/pgsql/14/data/pg_hba.conf。该文件包含 PostgreSQL 客户端认证的规则。
服务文件位于 /usr/lib/systemd/system/postgresql-14.service。此文件包含 PostgreSQL 14 服务的启动参数、环境变量和其他信息。
日志文件位于 /var/lib/pgsql/14/data/log 下。
更改 PostgreSQL 的默认数据目录需要几个步骤。首先,您已经在 .bash_profile
中设置了 PGDATA
环境变量为新的数据目录 /data/postgres/pgdata/
。接下来,您需要按照以下步骤操作:
-
停止 PostgreSQL 服务:
sudo systemctl stop postgresql-14
-
创建新的数据目录:
确保/data/postgres/pgdata/
目录存在,如果不存在,您需要创建它,并确保postgres
用户有权限访问和操作该目录。sudo mkdir -p /data/postgres/pgdata/ sudo chown postgres:postgres /data/postgres/pgdata/ sudo chmod 700 /data/postgres/pgdata/
-
初始化新的数据目录:
以postgres
用户身份初始化新的数据目录。sudo -u postgres /usr/pgsql-14/bin/initdb -D /data/postgres/pgdata/
-
修改 systemd 服务文件(可选):
如果您想让 systemd 服务文件直接使用新的数据目录,您可以编辑/usr/lib/systemd/system/postgresql-14.service
文件,找到Environment=PGDATA=...
行并修改路径,然后重新加载 systemd 配置。sudo vim /usr/lib/systemd/system/postgresql-14.service # 修改 Environment=PGDATA=/data/postgres/pgdata/ sudo systemctl daemon-reload
-
启动 PostgreSQL 服务:
sudo systemctl start postgresql-14
-
验证更改:
检查 PostgreSQL 是否正常运行,并且新的数据目录正在被使用。sudo -u postgres psql -c "SHOW data_directory;"
请确保在执行这些步骤之前备份任何重要数据,以防出现任何错误。如果您的 PostgreSQL 数据库中已经有数据,您可能需要将数据从旧目录迁移到新目录。这通常涉及到使用 pg_basebackup
或类似工具复制数据文件。
为了设置 postgres
用户的环境变量,确保其正确地使用新的 PostgreSQL 数据目录。请按照以下步骤操作:
-
进入
postgres
用户的家目录:cd /var/lib/pgsql
-
编辑
.bash_profile
文件:
使用vim
或您喜欢的文本编辑器来编辑.bash_profile
文件。vim .bash_profile
然后添加或修改以下环境变量设置:
export PATH=/usr/pgsql-14/bin:$PATH export LD_LIBRARY_PATH=/usr/pgsql-14/lib export PGDATA=/data/postgres/pgdata/
这些设置会添加 PostgreSQL 的二进制目录到路径中,设置库文件路径,并且定义 PostgreSQL 数据目录的位置。
-
应用更改:
保存并关闭.bash_profile
文件后,您需要让这些更改生效。这可以通过使用source
命令来完成。source .bash_profile
这将立即应用您在
.bash_profile
中所做的更改到当前会话。
确保您是以 postgres
用户或具有适当权限的用户执行这些操作。这些步骤将确保每当 postgres
用户登录时,都会使用正确的环境变量。
由于已经更改了数据目录为 /data/postgres/pgdata/
,在修改配置文件时需要注意路径的调整。
4.2 设置超级用户密码
-
以
postgres
用户登录操作系统:su - postgres
-
连接到 PostgreSQL 服务:
psql
-
更改
postgres
用户的密码:
在 PostgreSQL 命令行中,执行以下命令:\password postgres
-
退出 PostgreSQL 命令行:
\q
4.3 配置远程访问
-
修改
pg_hba.conf
文件以配置认证规则:
允许所有 IP 地址访问,修改/data/postgres/pgdata/pg_hba.conf
文件。sed -i '$ a\host all all 0.0.0.0/0 md5' /data/postgres/pgdata/pg_hba.conf
-
编辑
postgresql.conf
以允许从任何地址连接:
默认情况下,PostgreSQL 只接受来自 localhost 的连接请求。您需要编辑/data/postgres/pgdata/postgresql.conf
文件,将listen_addresses
设置为 ‘*’。sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /data/postgres/pgdata/postgresql.conf
4.4 设置 PostgreSQL 的最大连接数
-
默认最大连接数为 100,您可以将其设置为 1000。
sed -i 's/^#*\s*max_connections\s*=.*$/max_connections = 1000/' /data/postgres/pgdata/postgresql.conf
完成这些更改后,您需要重启 PostgreSQL 服务以使配置生效:
sudo systemctl restart postgresql-14
确保您在进行这些更改时,已经拥有足够的权限,并且在更改配置文件之前做好备份。这些步骤将使您的 PostgreSQL 数据库能够处理远程连接和更多的并发连接。