PostgreSQL へのログインと認証
- PostgreSQL のデータベースへの接続
- 
          
            PostgreSQL で createuserとcreatedbを使用する
- SQL 管理コマンドを使用し、TCP 経由でパスワードを使用して接続する
 
この記事では、特定の 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
上記の例では、サーバーは存在しないユーザー名 david で david という名前のデータベースにアクセスしようとします。
PostgreSQL で createuser と createdb を使用する
デフォルトでは、PostgreSQL サーバーにはユーザー名 postgres と postgres という名前のデータベースを持つユーザーがいます。 次のコマンドを使用して、オペレーティング システムと同じ名前のデータベース ユーザーを作成します。
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 サーバーにログインしようとすると、ログインに使用されるデフォルトのユーザーとデータベースは david と david になります。
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 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