PostgreSQL へのログインと認証

David Mbochi Njonge 2023年6月20日
  1. PostgreSQL のデータベースへの接続
  2. PostgreSQL で createusercreatedb を使用する
  3. SQL 管理コマンドを使用し、TCP 経由でパスワードを使用して接続する
PostgreSQL へのログインと認証

この記事では、特定の PostgreSQL データベースにアクセスするためにログインして認証を受ける方法について説明します。

PostgreSQL のデータベースへの接続

PostgreSQL データベースに接続するときは、接続先のデータベース、サーバーのホスト アドレス、ポート番号、およびユーザー名を作成する必要があります。 パラメータは、次のコマンドライン引数を使用して指定できます。

david@david-HP-ProBook-6470b:~$ psql -h localhost -U postgres -p 5432

引数を省略した場合に使用されるデフォルトの接続パラメータがあります。 ユーザー名とデータベースを省略した場合、サーバーはオペレーティング システムのユーザー名を使用します。

選択したデータベースもオペレーティング システムと同じ名前であり、これらのパラメーターが存在しない場合、次のエラーが発生する可能性があります。

david@david-HP-ProBook-6470b:~$ psql
psql: error: FATAL:  role "david" does not exist

上記の例では、サーバーは存在しないユーザー名 daviddavid という名前のデータベースにアクセスしようとします。

PostgreSQL で createusercreatedb を使用する

デフォルトでは、PostgreSQL サーバーにはユーザー名 postgrespostgres という名前のデータベースを持つユーザーがいます。 次のコマンドを使用して、オペレーティング システムと同じ名前のデータベース ユーザーを作成します。

david@david-HP-ProBook-6470b:~$ sudo -u postgres createuser -s $USER

次に、新しいユーザー david に対して createdb コマンドを使用してデータベースを作成します。

david@david-HP-ProBook-6470b:~$ createdb employee_db

PSQL を使用してログインできることを確認するには、接続先のデータベースを指定する必要があります。

david@david-HP-ProBook-6470b:~$ psql -d employee_db

出力:

psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
Type "help" for help.

employee_db=# 

データベースのデフォルトをオペレーティング システム、つまり私の場合は david にしたいとします。 データベース名を要求する -d 引数を使用せずに createdb コマンドを使用します。

david@david-HP-ProBook-6470b:~$ createdb

パラメーターを指定せずに PSQL を使用して PostgreSQL サーバーにログインしようとすると、ログインに使用されるデフォルトのユーザーとデータベースは daviddavid になります。

david@david-HP-ProBook-6470b:~$ psql

出力:

psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
Type "help" for help.

david=# 

SQL 管理コマンドを使用し、TCP 経由でパスワードを使用して接続する

SQL には、PostgreSQL データベースにユーザーとそのデータベースを作成するために利用できるコマンドがあります。 次のコマンドは、スーパーユーザーとして PostgreSQL サーバーにログインすることです。

david@david-HP-ProBook-6470b:~$ sudo -u postgres psql postgres

オペレーティング システムのパスワードを入力し、パスワードを求められたら Enter キーを押します。

[sudo] password for david: 

出力:

psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
Type "help" for help.

postgres=#

PSQL シェルで、ユーザーとデータベースを作成し、作成したデータベースにユーザーを関連付けます。

postgres=# CREATE ROLE john LOGIN PASSWORD 'john';
CREATE ROLE
postgres=# CREATE DATABASE products_db WITH OWNER = john;
CREATE DATABASE
postgres=# 

最後に、TCP 上で PSQL コマンドを使用してログインし、ホスト、データベース、ユーザー、およびポート番号を指定します。 PostgreSQL サーバーのデフォルトのポート番号は 5432 です。

次のコマンドは、TCP 経由で新しいユーザーでログインできることを確認します。

david@david-HP-ProBook-6470b:~$ psql -h localhost -d products_db -U john -p 5432

パスワードの入力を求めるプロンプトが表示されたら、ユーザー名と同じ名前である john として設定したパスワードを入力し、キーボードの Enter ボタンを押します。

Password for user john: 

出力:

psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

products_db=> 
David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub

関連記事 - PostgreSQL Database