在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模块禁用。请注意这一点。