在Oracle Linux 8上安装PostgreSQL 13并创建数据库

议程

1 首先
2 环境描述和前提条件
3 安装PostgreSQL13
4 连接到PostgreSQL13
5 创建角色
6 创建数据库
7 总结

首先

你好,我是NTT数据先端技术的阴。
本次将介绍在Oracle Cloud Infrastructure(OCI)上使用Oracle Linux8安装PostgreSQL13(PSQL13)并创建数据库的方法。

2 环境描述和前提条件

这次的工作环境信息和前提条件如下:

环境信息

操作系统映像:Oracle-Linux-8.7
区域:ap-tokyo-1(日本东部(东京))

前提条件

① 确保已设置Shell终端控制台。
② 已创建实例。
③ 能够通过SSH连接到实例。
④ 可以从实例访问互联网。

3 PostgreSQL13安装

首先,安装必要的PostgreSQL存储库RPM以安装PSQL13。

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

在安装了PostgreSQL存储库后,直接安装PSQL13会导致操作系统默认的PostgreSQL模块与已安装的存储库发生冲突,导致找不到安装包并出现错误。

Error: Unable to find a match: postgresql13-server

为了防止安装的代码库与操作系统的标准模块产生冲突,将禁用操作系统的标准模块。

$ sudo dnf -qy module disable postgresql

安装PSQL13服务器。

$ sudo dnf install -y postgresql13-server

确认PSQL的版本并确保安装已经成功完成。

$ psql --version
psql (PostgreSQL) 13.9

在安装PostgreSQL时,自动启动被禁用,并且数据库未被自动初始化,所以为了完成安装,需要执行初始化数据库的命令和启用自动启动的命令。

$ sudo /usr/pgsql-13/bin/postgresql-13-setup initdb  ←  データベース初期化
$ sudo systemctl enable postgresql-13  ←  PSQL13自動起動有効
$ sudo systemctl start postgresql-13  ←  PSQL13起動

连接到 PostgreSQL 13

由于在PostgreSQL中,默认的连接认证方式是对等认证方式,因此可以通过切换到在PostgreSQL安装时默认创建的操作系统用户(postgres)来进行连接。

※ peer认证方式是从内核中获取客户端操作系统的用户名,并将其作为数据库用户名来使用。
※ 在安装PostgreSQL时,默认会创建操作系统用户(postgres)和数据库用户(postgres)。

$ su - postgres 
$ psql -U postgres
psql (13.9)
Type "help" for help.

postgres=# 

5 制作卷装

使用CREATE ROLE命令创建新角色。
尽管有多个选项可以进行各种设置,但这次我们将创建一个可以进行用户认证并登录的角色。

可以在以下网站上查看有关CREATE ROLE命令的详细选项:
https://www.postgresql.jp/document/13/html/sql-createrole.html

CREATE ROLE pgtest LOGIN PASSWORD 'pgtestのパスワード';

要创建一个具有所创建的角色的数据库,您需要是超级用户或具有CREATEDB权限。

ALTER ROLE pgtest WITH SUPERUSER;
ALTER ROLE pgtest CREATEDB;

如果在创建的角色上没有授予所需的权限并执行CREATE DATABASE命令,将会出现以下错误。

ERROR:  permission denied to create database

6 创建数据库

使用CREATE DATABASE命令创建新数据库。虽然可以使用多个选项进行各种设置,但本次目的是创建一个具有5个角色创建的角色(pgtest)所有权并能够输入日语的数据库。

您可以在以下网站上查看有关CREATE DATABASE命令的详细选项:
https://www.postgresql.jp/document/13/html/sql-createdatabase.html

CREATE DATABASE pgtest WITH ENCODING='UTF8' LC_COLLATE='ja_JP.utf8' LC_CTYPE='ja_JP.utf8' OWNER=pgtest TEMPLATE=template0;

在创建一个可以进行日语输入的数据库时,如果在CREATE DATABASE时没有安装适用于日语的locale,可能会出现错误。

ERROR:  invalid locale name: "ja_JP.utf8"

如果发生本地化错误,请从以下链接中查看解决方法。
https://qiita.com/EumJinman/private/fee647cac84626be2214

执行CREATE DATABASE命令后,请确认数据库已成功创建。

postgres=# \l
                                 List of databases
 Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+------------------
pgtest    | pgtest   | UTF8     | ja_JP.utf8  | ja_JP.utf8  | 
postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 

总结

这次介绍了在Oracle Linux 8上安装PSQL13并创建数据库的方法。
在安装PSQL13时,请注意在安装PSQL13所需的存储库RPM和操作系统中默认的PostgreSQL模块之间可能会发生冲突并引发错误。因此,在安装PSQL13之前,请务必将操作系统默认的PostgreSQL模块禁用。请注意这一点。

bannerAds