検証用にPostgreSQL 12をインストールしたマシンが必要だったので、Ubuntu20.04の環境にインストールしました。今回はインストール時の覚書です。
動作環境
- 仮想環境:VirtualBox 6.14.4
- インストール先OS:Ubuntu 20.04
- RAM:2GB
事前準備
aptインストールを実施するために事前準備を行います。インストールにcurl
とca-certificates
が必要になるので、インストールしておきます。
$ sudo apt install curl ca-certificates
まずはリポジトリを追加します。
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
次に認証キーを追加します。
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
追加時にOKと表示されれば成功です!
インストール
パッケージを最新化しておきましょう。
$ sudo apt update $ sudo apt upgrade
最新化が終わったらPostgreSQL 12をインストールします。
$ sudo apt install postgresql-12
インストールができたか、バージョンを確認してみましょう。
$ psql -V psql (PostgreSQL) 12.3 (Ubuntu 12.3-1.pgdg20.04+1)
これでインストールは完了です。
そのまま、外部接続許可とユーザアカウント作成をします。
外部接続許可
外部からの接続を許可する設定をしましょう。
まずはpostgresql.confを修正します。
$ sudo vi /etc/postgresql/12/main/postgresql.conf
上記ファイルの59行目あたりにあるlisten_addressesはデフォルトlocalhost
が設定されているので、*
を入れるか、任意のIPアドレスを入れてください。下記では全IPからのアクセスを許可する場合の例を入れています。
53 #------------------------------------------------------------------------------ 54 # CONNECTIONS AND AUTHENTICATION 55 #------------------------------------------------------------------------------ 56 57 # - Connection Settings - 58 59 listen_addresses = '*' # what IP address(es) to listen on; 60 # comma-separated list of addresses; 61 # defaults to 'localhost'; use '*' for all 62 # (change requires restart)
次にpg_hba.confを修正します。
$ sudo vi /etc/postgresql/12/main/pg_hba.conf
上記ファイルでは認証を受け付けるIPの範囲を設定します。ファイル末行に許可したいIPアドレスの範囲を追記してください。下記では全IPからのアクセスを許可する場合の例を入れています。
host all all 0.0.0.0/0 trust
設定を反映させるためにサービスを再起動します。
$ sudo service postgresql restart
これで外部からの接続許可設定が完了です。
ユーザの作成
続けて、postgresqlへ接続するためのユーザを作成します。
新規ユーザ作成はスーパーユーザまたはCreateRole権限を持つユーザのみが行うことができます。
ここではインストール時に初期に設定されるスーパーユーザのpostgres
を使用して行います。
今回はpostgres
ユーザでログインし、test_admin
というユーザ名でユーザを作成してみたいと思います。
まずはpostgres
ユーザに切り替え、PostgreSQLに接続します。
$ sudo su - postgres $ psql
PostgreSQLに接続したらCREATE ROLE
コマンドを実行し、ユーザ作成を行います。
postgres=# CREATE ROLE test_admin LOGIN PASSWORD 'xxxxxxxxxx';
接続したユーザが登録されてるか下記コマンド確認してみましょう。
postgres=# \du List of roles Role name | Attributes | Member of ------------+------------------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} test_admin | | {}
実際にログインできるか確認してみます。
$ psql -h xxx.xxx.xxx.xxx -U test_admin -d postgres Password for user test_admin: psql (12.3 (Ubuntu 12.3-1.pgdg20.04+1)) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help. postgres=>
無事ログインできることを確認できました。
PostgreSQLのよく使うコマンドは別途まとめておこうと思います。 今回はインストールして接続できるところまでを確認しました。