PostgreSQLまたはPostgresは、複雑なWebアプリケーションを作成できる多くの高度な機能を備えたオープンソースの汎用オブジェクトリレーショナルデータベース管理システムです。
このチュートリアルでは、CentOS7マシンにPostgreSQLをインストールする方法について2つの異なる方法を紹介します。最初の方法では、CentOSリポジトリからPostgreSQL v9.2.23をインストールするために必要な手順を説明し、2番目の方法では、公式のPostgreSQLリポジトリから最新バージョンのPostgreSQLをインストールする方法を示します。
アプリケーションが最新バージョンを必要としない場合は、最初の方法を使用して、CentOSリポジトリからPostgreSQLをインストールすることをお勧めします。
また、PostgreSQLデータベース管理の基本についても説明します。
前提条件#
このチュートリアルを続行する前に、sudo権限を持つユーザーとしてログインしていることを確認してください。
CentOSリポジトリからPostgreSQLをインストールします#
この記事を書いている時点で、CentOSリポジトリから入手できるPostgreSQLの最新バージョンはPostgreSQLバージョン9.2.23です。
CentOSサーバーにPostgreSQLをインストールするには、以下の手順に従います。
-
PostgreSQLのインストール
PostgreSQLデータベースにいくつかの追加機能を提供するPostgreSQLcontribパッケージと一緒にPostgreSQLサーバーをインストールするには、次のように入力します。
sudo yum install postgresql-server postgresql-contrib -
データベースの初期化
次のコマンドを使用してPostgreSQLデータベースを初期化します。
sudo postgresql-setup initdbInitializing database ... OK -
PostgreSQLの起動
PostgreSQLサービスを開始し、起動時に開始できるようにするには、次のように入力します。
sudo systemctl start postgresqlsudo systemctl enable postgresql -
PostgreSQLのインストールの確認
インストールを確認するために、
psqlを使用してPostgreSQLデータベースサーバーに接続しようとします。 ツールを使用してサーバーバージョンを印刷します:sudo -u postgres psql -c "SELECT version();"PostgreSQL 9.2.23 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit (1 row)
PostgreSQLリポジトリからPostgreSQLをインストールします#
この記事を書いている時点で、公式のPostgreSQLリポジトリから入手できるPostgreSQLの最新バージョンはPostgreSQLバージョン10.4です。次のステップに進む前に、PostgreSQL Yumリポジトリページにアクセスして、新しいバージョンが利用可能かどうかを確認する必要があります。
以下の手順に従って、CentOSサーバーに最新のPostgreSQLバージョンをインストールします:
-
PostgreSQLリポジトリの有効化
PostgreSQLリポジトリを有効にするには、リポジトリ
rpmをインストールするだけです。 ファイル:sudo yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm -
PostgreSQLのインストール
リポジトリが有効になったら、次のコマンドを使用してPostgreSQLサーバーとPostgreSQLcontribパッケージをインストールします。
sudo yum install postgresql10-server postgresql10-contrib -
データベースの初期化
PostgreSQLデータベースタイプを初期化するには:
sudo /usr/pgsql-10/bin/postgresql-10-setup initdbInitializing database ... OK -
PostgreSQLの起動
PostgreSQLサービスを開始し、ブートタイプで開始できるようにするには:
sudo systemctl start postgresql-10sudo systemctl enable postgresql-10 -
PostgreSQLのインストールの確認
インストールを確認するために、
psqlを使用してPostgreSQLデータベースサーバーに接続しようとします。 ツールを使用してサーバーバージョンを印刷します:sudo -u postgres /usr/pgsql-10/bin/psql -c "SELECT version();"PostgreSQL 10.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit (1 row)
PostgreSQLの役割と認証方法#
PostgreSQL内のデータベースアクセス許可は、ロールの概念で処理されます。ロールは、データベースユーザーまたはデータベースユーザーのグループを表すことができます。
PostgreSQLは複数の認証方法をサポートしています。最も一般的に使用される方法は次のとおりです。
- 信頼-この方法では、
pg_hba.confで定義された基準がある限り、役割はパスワードなしで接続できます。 満たされています。 - パスワード-役割はパスワードを提供することで接続できます。パスワードは
scram-sha-256として保存できますmd5およびpassword(クリアテキスト)。 - Ident-このメソッドはTCP/IP接続でのみサポートされます。これは、オプションのユーザー名マッピングを使用して、クライアントのオペレーティングシステムのユーザー名を取得することで機能します。
- ピア-Identと同じですが、ローカル接続でのみサポートされます。
PostgreSQLクライアント認証は、pg_hba.confという名前の構成ファイルで定義されています。 。デフォルトでは、ローカル接続の場合、PostgreSQLはピア認証方式を使用するように設定されています。
postgres PostgreSQLをインストールすると、ユーザーが自動的に作成されます。このユーザーはPostgreSQLインスタンスのスーパーユーザーであり、MySQLルートユーザーと同等です。
postgresユーザーとしてPostgreSQLサーバーにログインするには、最初にuserpostgresに切り替えてから、psqlを使用してPostgreSQLプロンプトにアクセスする必要があります。 ユーティリティ:
sudo su - postgrespsql
ここから、PostgreSQLインスタンスを操作できます。 PostgreSQLシェルを終了するには、次のように入力します。
\q
sudoを使用して、ユーザーを切り替えることなくPostgreSQLプロンプトにアクセスすることもできます。 コマンド:
sudo -u postgres psql
postgres ユーザーは通常、ローカルホストからのみ使用されるため、このユーザーのパスワードを設定しないことをお勧めします。
psqlへのフルパスを使用する必要があります。 /usr/pgsql-10/bin/psqlであるバイナリ 。 PostgreSQLの役割とデータベースの作成#
CREATEROLEを持つスーパーユーザーとロールのみ 特権は新しい役割を作成できます。
次の例では、johnという名前の新しいロールを作成します johndbという名前のデータベース データベースに対する特権を付与します。
-
PostgreSQLシェルに接続する
sudo -u postgres psql -
新しいPostgreSQLロールを作成する
次のコマンドは、「john」という名前の新しいロールを作成します。
CREATE ROLE john; -
新しいPostgreSQLデータベースを作成する
createdbを使用して、「johndb」という名前の新しいデータベースを作成します コマンド:CREATE DATABASE johndb; -
特権を付与する
johnに権限を付与するには 前の手順で作成したデータベースのユーザーは、次のクエリを実行します。GRANT ALL PRIVILEGES ON DATABASE johndb TO john;
PostgreSQLサーバーへのリモートアクセスを有効にする#
デフォルトでは、PostgreSQLサーバーはローカルインターフェース127.0.0.1でのみリッスンします 。 PostgreSQLサーバーへのリモートアクセスを有効にするには、構成ファイルpostgresql.confを開きます。 listen_addresses = '*'を追加します CONNECTIONS AND AUTHENTICATION セクション。
sudo vim /var/lib/pgsql/data/postgresql.conf PostgreSQLバージョン10を実行している場合、ファイルへのパスは/var/lib/pgsql/10/data/postgresql.confです。 ./var/lib/pgsql/data/postgresql.conf #------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
ファイルを保存し、次のコマンドでPostgreSQLサービスを再起動します。
sudo systemctl restart postgresql PostgreSQLバージョン10を実行している場合は、systemctl restart postgresql-10を使用してPostgreSQLサービスを再起動します。 。
ssで変更を確認します ユーティリティ:
ss -nlt | grep 5432 LISTEN 0 128 0.0.0.0:5432 0.0.0.0:*
LISTEN 0 128 [::]:5432 [::]:*
上記の出力からわかるように、PostgreSQLサーバーはすべてのインターフェース(0.0.0.0)をリッスンしています。
最後のステップは、pg_hba.confを編集して、リモート接続を受け入れるようにサーバーを構成することです。 ファイル。
以下は、さまざまなユースケースを示すいくつかの例です。
/var/lib/pgsql/data/pg_hba.conf# TYPE DATABASE USER ADDRESS METHOD
# The user jane will be able to access all databases from all locations using a md5 password
host all jane 0.0.0.0/0 md5
# The user jane will be able to access only the janedb from all locations using a md5 password
host janedb jane 0.0.0.0/0 md5
# The user jane will be able to access all databases from a trusted location (192.168.1.134) without a password
host all jane 192.168.1.134 trust
PostgreSQLバージョン10を実行している場合、ファイルへのフルパスは/var/lib/pgsql/10/data/pg_hba.confです。 。