この記事は最初に公開されました:[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