在 Linux 系统下安装 PostgreSQL,可以选择快捷方便的 Docker 安装,但正常的服务器都是直接原生安装的,所以,这里我将讲解如何正常安装 PostgreSQL 以及安装之后的一些配置。如果想了解 Docker 安装的话,可以查看我的另一篇博客:【Docker】之安装 PgSQL。
PostgreSQL
安装流程进入 PostgreSQL 官网下载页面:https://www.postgresql.org/download/,默认会进入安装包(Packages)下载页面,选择自己的系统和发行版本。这里,由于我使用的系统是 Centos7,所以选择 Linux
下的 Red Hat
选项:
Select version
:选择 PostgreSQL 的安装版本,这里我选择安装 15 的版本;Select platform
:选择安装平台,这里我根据我的系统选择对应的 CentOS 平台;Select architecture
:选择处理器指令集架构,这里我选择的是 x86_64
。当你选好版本、平台和处理器架构之后,下面的第 4 栏会出现相应的安装脚本。下面我们就根据官方给的脚本进行逐步安装。
2-1、安装 RPM
仓库
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
2-2、安装 PostgreSQL 服务
sudo yum install -y postgresql15-server
如果安装过程中报错,缺少 libzstd.so.1
包依赖:
Error: Package: postgresql15-server-15.5-1PGDG.rhel7.x86_64 (pgdg15)
Requires: libzstd.so.1()(64bit)
则执行下面的命令进行相关依赖包的安装:
yum install -y epel-release.noarch
yum install -y libzstd.x86_64
安装依赖成功之后再次执行 PostgreSQL 服务的安装命令即可。
2-3、安装后的配置
由于 RedHat 系列发行版的政策原因,PostgreSQL 安装完成之后不会自动启动,同时也不会自动初始化数据库。所以需要执行下面的命令来使整个安装完成:
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15
执行完成之后可以查看 PostgreSQL 的运行状态:
$ systemctl status postgresql-15
--------------------------------
● postgresql-15.service - PostgreSQL 15 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-15.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2024-01-07 04:19:12 UTC; 8s ago
Docs: https://www.postgresql.org/docs/15/static/
PostgreSQL
相关命令与配置安装完毕后,系统会创建一个数据库超级用户 postgres
,密码为空,我们需要先切换到该用户再登录数据库:
su - postgres
此时会出现相应的 bash
命令行提示符 -bash-4.2$
,我们直接输入 psql
命令登录:
-bash-4.2$ psql
psql (15.5)
Type "help" for help.
postgres=#
psql
命令使用的是数据库默认内置的用户 postgres
进行登录的,所以该命令和 psql -U postgres
是一样的效果,我们可以使用 \du
命令查看当前的数据库用户:
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
密码修改:为了方便我们后续远程登录,我们可以修改一下修改密码:
postgres=# alter user postgres with password '123456';
ALTER ROLE
输入 \q
命令退出登录。
PostgreSQL 的配置文件存放在 /var/lib/pgsql/15/data
目录下,修改 postgresql.conf
配置文件:
vi postgresql.conf
找到 listen_addresses
参数行,原本是被注释的,默认值是 localhost
表示只能本地登录,我们在下面仿照将该参数修改为 *
:
# - Connection Settings -
#listen_addresses = 'localhost' # what IP address(es) to listen on;
listen_addresses = '*'
同时修改同目录下的 pg_hba.conf
配置文件,在 IPv4 local connections
下添加一行 host all all 0.0.0.0/0 md5
:
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
host all all 0.0.0.0/0 md5
配置完成之后重启一下服务:
systemctl restart postgresql-15
重启完成之后,就可以使用第三方数据库管理工具进行远程登录访问了。