PostgreSQL 是一个功能强大的开源对象关系数据库管理系统(DBMS)。它经过了超过 35 年的战斗测试,这为它在可靠性和性能方面赢得了强大的声誉。这个功能丰富的数据库被许多科技巨头使用,如苹果、IMDB、Instagram 等。
PostgreSQL 支持大量的 SQL 标准,并且在很多方面都可以被用户扩展。一些突出的特性包括 ACID 事务、外键、子查询、触发器、用户定义的类型、函数等。
必要条件
在安装 PostgreSQL 服务器之前,请确保系统满足以下安装要求
- Pre-Installed Ubuntu 22.04
- A regular user with sudo rights
- An active internet connection
- At least 2 GB of RAM with an additional 512 MB of disk space. Please
note that this is a minimal requirement for the demo environment. The
actual hardware configuration will vary with data volume.
(1) 启用 PostgreSQL 包存储库
PostgreSQL 15 包在默认包存储库中不可用,因此使用以下命令启用它的官方包存储库。
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
$ wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/trusted.gpg.d/pgdg.asc &>/dev/null
使用 apt update 命令获取包的最新版本
$ sudo apt update
(2) 安装数据库服务端和客户端
postgresql 包安装的是数据库服务器,而 postgresql-client 包安装的是客户端实用程序。
使用下面的 apt 命令安装 PostgreSQL 客户端和服务器
$ sudo apt install postgresql postgresql-client -y
验证 PostgreSQL 服务是否启动并运行
$ sudo systemctl status postgresql
使用 psql 命令行实用程序检查 PostgreSQL 版本
$ psql --version
在这里,我们可以看到 PostgreSQL 的版本是 15
(3) 更新管理员用户密码
默认情况下,我们可以不使用任何密码连接到 PostgreSQL 服务器。
$ sudo -u postgres psql
postgres=#
在上面的输出中,postgres=# 提示符表示与 PostgreSQL 服务器的活动连接。
在本例中,我们使用了 postgres 用户。这是 PostgreSQL 的一个管理用户,在安装过程中创建。
允许管理员不使用密码访问数据库不是一个好主意。让我们为 postgres 用户设置密码
postgres=# ALTER USER postgres PASSWORD 'demoPassword';
上面的 SQL 查询将用户密码设置为 dempassword。请注意,我们使用了非常简单的密码,因为这是一个演示环境。但是,在生产环境中不建议这样做。
让我们验证一下密码是否设置成功,使用 \q 命令终止与服务器的当前会话。
postgres=# \q
我们再次连接数据库服务器
$ psql -h localhost -U postgres
输入 dempassword 字符串作为密码,我们可以成功连接到数据库。
(4) 配置 PostgreSQL 允许远程连接
默认情况下,PostgreSQL 只接受来自本地主机的连接。我们可以修改配置,允许远程客户机的连接。
For example, in our case the full path of the file is /etc/postgresql/15/main/postgresql.conf.
使用编辑器打开 /etc/postgresql/15/main/postgresql.conf 配置文件
取消 listen_addresses 开头的行注释,用 * 替换 localhost
修改后的文件看起来像这样
保存并关闭该文件
接下来,编辑 pg hba.conf 文件的 IPv4 本地连接部分,以允许来自所有客户端的 IPv4 连接。
$ sudo vi /etc/postgresql/15/main/pg_hba.conf
修改后的文件看起来像这样
上面的配置中指示允许从网络 192.168.1.0/24 进行连接
如果开启了防火墙,那么使用下面的命令允许 PostgreSQL 5432 端口
$ sudo ufw allow 5432/tcp
验证远程连接
最后,重新启动服务并检查它是否正常运行
$ sudo systemctl restart postgresql
$ sudo systemctl status postgresql
让我们尝试从远程客户端访问数据库服务器
$ psql -h 192.168.1.192 -U postgres
在本例中,192.168.1.192 为 PostgreSQL 数据库服务器的 IP 地址
可以看到我们能够从远程客户机成功访问数据库服务器
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。