Postgresqlは、30年以上にわたって活発に開発されてきたオープンソースのオブジェクトリレーショナルデータベースシステムであり、信頼性、機能の堅牢性、およびパフォーマンスで高い評価を得ています。 Postgresは、拡張性とSQLコンプライアンスを強調する無料のオープンソースリレーショナルデータベース管理システムです。もともとはPOSTGRESと名付けられ、カリフォルニア大学バークレー校で開発されたIngresデータベースの後継としてその起源を示しています。 PostgreSQLは、多くのWeb、モバイル、地理空間、および分析アプリケーションのプライマリデータストアまたはデータウェアハウスとして使用されます。 PostgreSQLは、構造化データと非構造化データを1つの製品に保存できます。
また、チェックしてください:
- Ansibleを使用してUbuntu20.04にPostgres14をインストールおよび構成する方法
- FreeBSD13にPostgres14をインストールして設定する方法
- Postgresの権限–データベースユーザーの作成、更新、削除
- Debian11にPostgres14をインストールして設定する方法
- Centos8にPostgres14をインストールして構成する方法
- Centos8にPostgres13をインストールして構成する方法
- DockerとDocker-Composeを使用したPostgresql14の実行
- Postgres 13Ubuntu20.04をインストールして構成する方法
- Fedora34にPostgres14をインストールして設定する方法
- OpenSUSELeap15.3にPostgres14をインストールして設定する方法
前提条件
フォローするには、次のものがあることを確認してください。
- Ubuntu20.04サーバー
- サーバーまたはrootアクセス権を持つユーザーへのrootアクセス
- サーバーからのインターネットアクセス
- Linuxターミナルの知識
目次
- システムパッケージが最新であることを確認してください
- Postgres14のインストール
- PostgreSQLの役割とデータベースの認証方法
- Postgresデータベースへの接続
- リモートアクセス用のpostgresインスタンスの構成
- ユーザー管理
- リモートホストからインスタンスに接続する
1。システムパッケージが最新であることを確認してください
次のコマンドを使用して、サーバーのローカルパッケージインデックスを更新しましょう:
sudo apt update
次に、システム内のパッケージを次のようにアップグレードします。
sudo apt -y upgrade
2。 Postgres14のインストール
PostgresはデフォルトのUbuntuリポジトリで提供されています。提供されているバージョンを確認するには、次のコマンドを使用します:
sudo apt-cache search postgresql | grep postgresql
デフォルトのリポジトリによって提供されるデフォルトのパッケージはpostgres12です。Postgres12に興味がある場合は、次のコマンドを使用してインストールできます。 -contrib
いくつかの追加のユーティリティと機能を追加するパッケージ:
sudo apt install postgresql postgresql-contrib
Postgres 14のインストールを検討しているため、パッケージを提供するリポジトリを追加する必要があります
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 --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
それでは、パッケージリストを更新しましょう:
sudo apt -y update
次に、必要なpostgresの特定のバージョンをインストールします。 postgresql-14
を使用します postgresql
の代わりに :
sudo apt -y install postgresql-14
インストールが成功すると、Postgres14が起動します。
次のコマンドを使用して、サービスステータスを確認します。
$ sudo systemctl status postgresql ● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Thu 2021-10-14 09:32:22 UTC; 55s ago Main PID: 204727 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 4710) Memory: 0B CGroup: /system.slice/postgresql.service Oct 14 09:32:22 ip-172-26-11-229 systemd[1]: Starting PostgreSQL RDBMS... Oct 14 09:32:22 ip-172-26-11-229 systemd[1]: Finished PostgreSQL RDBMS.
次に、PostgreSQLデータベースサーバーに接続し、そのバージョンを確認して、インストールを確認しましょう。次のコマンドを使用します:
sudo -u postgres psql -c "SELECT version();"
出力:
version ---------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 14.0 (Ubuntu 14.0-1.pgdg20.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, 64-bi (1 row)
3。 PostgreSQLの役割とデータベースの認証方法
PostgreSQLはroles
と呼ばれる概念を使用しています クライアントの認証と承認を処理します。デフォルトでは、Postgresはident authentication
を使用するように設定されています 、これは、Postgresロールを一致するUnix/Linuxシステムアカウントに関連付けることを意味します。 Postgres内にロールが存在する場合、同じ名前のUnix/Linuxユーザー名がそのロールとしてサインインできます。
インストール手順により、デフォルトのpostgresロールに関連付けられたpostgresというユーザーアカウントが作成されました。 PostgreSQLを使用するには、そのアカウントにログインできます。
PostgreSQLは複数の認証方法をサポートしています。最も一般的に使用される方法は次のとおりです。
Trust
–pg_hba.conf
で定義されている条件である限り、ロールはパスワードなしで接続できます。 満たされています。Password
–役割は、パスワードを提供することで接続できます。パスワードはscram-sha-256
として保存できます 、md5
、およびpassword
(clear-text
。Ident
– TCP/IP接続でのみサポートされます。これは、オプションのユーザー名マッピングを使用して、クライアントのオペレーティングシステムのユーザー名を取得することで機能します。Peer
– Identと同じですが、ローカル接続でのみサポートされます。
4。 postgresデータベースに接続しています
1. postres
に切り替える ユーザー
次のように入力して、サーバーのpostgresアカウントに切り替えます。
sudo -i -u postgres
次のように入力すると、Postgresプロンプトにすぐにアクセスできるようになりました:
$ psql
psql (14.0 (Ubuntu 14.0-1.pgdg20.04+1))
Type "help" for help.
postgres=#
これによりPostgreSQLプロンプトにログインし、ここからデータベース管理システムをすぐに操作できます。
2.postgresユーザーとしてコマンドを実行する
これを使用して、コマンドをpostgres
として直接実行します sudoを使用しているユーザー
$ sudo -u postgres psql
psql (14.0 (Ubuntu 14.0-1.pgdg20.04+1))
Type "help" for help.
postgres=#
5。リモートアクセス用のpostgresインスタンスの構成
デフォルトでは、postgresはローカルでのみアクセスできるように設定されています。別のホストからサーバーにアクセスする場合、これは理想的ではありません。このセクションでは、リモートホストからのアクセスを許可するようにpostgresを構成します。
Postgres14構成ファイルはこのパスにあります/etc/postgresql/14/main/pg_hba.conf
$ sudo file /etc/postgresql/14/main/pg_hba.conf
/etc/postgresql/14/main/pg_hba.conf: ReStructuredText file, ASCII text
ピアIDを信頼に変更
このコマンドを使用して、peer
を変更します trust
へ
sed -i '/^local/s/peer/trust/' /etc/postgresql/14/main/pg_hba.conf
これにより、構成ファイルの行が次のように更新されます:
# "local" is for Unix domain socket connections only
local all all trust
ブロックを追加して、どこからでもアクセスできるようにします
このコンテンツをファイル/etc/postgresql/14/main/pg_hba.conf
に追加します すべてのホストにパスワードアクセスを許可するには:
vim /etc/postgresql/14/main/pg_hba.conf
次に、これを追加します:
host all all 0.0.0.0/0 md5
PostgreSQLが*をリッスンしていることを確認します
この行をここの構成に追加します/etc/postgresql/14/main/postgresql.conf
postgresがすべてのホストでリッスンできるようにする
listen_addresses='*'
構成を適用するには、postgres14サービスを再起動する必要があります。
postgresqlサーバーを有効にして再起動し、構成を再読み込みします。
sudo systemctl restart postgresql
sudo systemctl enable postgresql
6。ユーザー管理
スーパーユーザーの作成:
postgresサービスを管理するスーパーユーザーを作成したほうがよいでしょう。これは、他のユーザーやデータベースを管理する権限を持つ1人のユーザーです。
postres
としてDBに接続します 役割
$ sudo -u postgres psql
could not change directory to "/root": Permission denied
psql (14.0 (Ubuntu 14.0-1.pgdg20.04+1))
Type "help" for help.
postgres=#
root
という名前のスーパーユーザーを作成します このコマンドの使用:
CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';
ユーザーが作成され、必要な権限が付与されているかどうかを確認します。
postgres=# CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';
CREATE ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
root | Superuser, Create role, Create DB | {}
postgres=#
アプリケーションユーザーの管理
これを使用して、データベースを作成し、ユーザーを作成して、そのユーザーにそのデータベースへのすべてのアクセスを許可します。
create database app_db_name;
create user app_user with encrypted password 'dbpassword';
grant all privileges on database app_db_name to app_user;
postgresでのユーザーと権限の管理に関するこの包括的なガイドをここでチェックしてください。
7。リモートホストからインスタンスに接続する
次のコマンドを使用して、接続できることをテストします。
psql 'postgres://<username>:<password>@<host>:<port>/<db>?sslmode=disable'
# like
psql 'postgres://root:[email protected]:5432/postgres?sslmode=disable'
結論
これまで、UbuntuサーバーにPostgresql 14をインストールし、いくつかの基本的な構成を行ってから、基本的なユーザー管理を行うことができました。