
この記事は最初に公開されました:[https://www.itcoder.tech/posts/how-to-install-postgresql-on-ubuntu-20-04/](https://www.itcoder.tech/posts/how-to-install-postgresql-on-ubuntu-20-04/)
[ PostgreSQL](https://cloud.tencent.com/product/postgresql?from=10680)またはPostgresは、オープンソースの多目的[リレーショナルデータベース](https://cloud.tencent.com/product/cdb-overview?from=10680)管理システムです。障害に強い環境や複雑なアプリケーションを構築できる多くの高度な機能を備えています。
このガイドでは、Ubuntu 20.04にPostgreSQLデータベースサーバーをインストールする方法を説明し、PostgreSQLデータベース管理の基本的な操作について説明します。
パッケージをインストールするには、rootまたはsudo権限を持つ別のユーザーとしてログインします。
この記事を書いている時点で、公式のUbuntuソフトウェアソースで利用可能な最新のPostgreSQLのバージョンは10.4です。
次のコマンドを実行して、UbuntuにPostgreSQLをインストールします。
sudo apt update
sudo apt install postgresql postgresql-contrib
また、PostgreSQLデータベースシステムのいくつかの追加機能を提供できるPostgreSQLcontribパッケージもインストールします。
インストールが完了すると、PostgreSQLサービスが自動的に開始されます。 psqlツールを使用して、PostgreSQLデータベースに接続し、そのバージョンを印刷して、インストールを確認します。
sudo -u postgres psql -c "SELECT version();"
出力:
PostgreSQL 12.2(Ubuntu 12.2-4) on x86_64-pc-linux-gnu, compiled by gcc(Ubuntu 9.3.0-8ubuntu1)9.3.0,64-bit
それでおしまい。 PostgreSQLがインストールされ、使用を開始できます。
PostgreSQLデータベースのアクセス許可は、ロールを通じて処理されます。ロールは、データベースユーザーまたはデータベースユーザーグループを表します。
PostgreSQLは複数の認証方法をサポートしています。最も一般的に使用される方法は次のとおりです。
pg_hba.confで定義された条件が満たされている限り、ロールはパスワードを使用せずにサーバーに接続できますPostgreSQLクライアント認証は通常、 pg_hba.confファイルで定義されます。デフォルトでは、ローカル接続の場合、PostgreSQLはピアに対して認証するように設定されています。
postgresユーザーとしてPostgreSQLサーバーにログインするには、最初にユーザーを切り替えてから、 psqlツールを使用してPostgreSQLにアクセスします。
sudo su - postgres
psql
ここから、PostgreSQLインスタンスを操作できます。 PostgreSQLシェルを終了し、次のように入力します。
\ q
sudoコマンドを使用して、ユーザーを切り替えることなくPostgreSQLにアクセスすることもできます。
sudo -u postgres psql
通常、 postgresユーザーはローカルでのみ使用されます。
新しいロールを作成できるのは、スーパーユーザーと CREATEROLE権限を持つロールのみです。
次の例では、 johnという名前のロール、 johndbという名前のデータベースを作成し、データベースへのアクセス許可を付与します。
sudo su - postgres -c "createuser john"
sudo su - postgres -c "createdb johndb"
ユーザーにデータベースの操作を許可するには、PostgreSQLシェルに接続します。
sudo -u postgres psql
そして、次のクエリを実行します。
grant all privileges on database johndb to john;
デフォルトでは、PostgreSQLサーバーはローカルネットワークインターフェイス 127.0.0.1でのみリッスンします。
PostgreSQLサーバーへのリモートアクセスを許可するには、構成ファイル postgresql.confを開き、セクション CONNECTIONS ANDAUTHENTICATIONに listen_addresses = '*'を追加します。
sudo nano /etc/postgresql/12/main/postgresql.conf
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses ='*' # what IP address(es) to listen on;
ファイルを保存して、PostgreSQLサービスを再起動します。
sudo service postgresql restart
ssツールを使用して変更を確認します。
ss -nlt | grep 5432
出力は、PostgreSQLサーバーがすべてのネットワークインターフェイス( 0.0.0.0)でリッスンしていることを示しています。
LISTEN 02440.0.0.0:54320.0.0.0:*
LISTEN 0244[::]:5432[::]:*
次のステップは、リモート接続を受け入れるようにサーバーを構成し、 pg_hba.confファイルを編集することです。
さまざまなユーザーシナリオを示すいくつかの例を次に示します。
# TYPE DATABASE USER ADDRESS METHOD
# The user jane can access all databases from all locations using md5 password
host all jane 0.0.0.0/0 md5
# The user jane can access only the janedb from all locations using md5 password
host janedb jane 0.0.0.0/0 md5
# The user jane can access all databases from a trusted location(192.168.1.134) without a password
host all jane 192.168.1.134 trust
最後のステップは、ファイアウォールのポート 5432を開くことです。
UFWを使用してファイアウォールを管理していて、 192.168.1.0 / 24サブネットからのアクセスを許可する場合は、次のコマンドを実行する必要があります。
sudo ufw allow proto tcp from192.168.1.0/24 to any port 5432
ファイアウォールが構成されており、信頼できるIP範囲からの接続のみを受け入れることを確認してください。
Ubuntu20.04サーバーにPostgreSQLをインストールして構成する方法を説明しました。このトピックの詳細については、[PostgreSQL 12ドキュメント](https://www.postgresql.org/docs/12/static/index.html)を参照してください。
ご不明な点がございましたら、以下の方法でお問い合わせください。
WeChat:sn0wdr1am86

WeChatグループ:上記のWeChatを追加し、WeChatグループにコメントします
QQ: 3217680847

QQグループ:82695646


Recommended Posts