3.3. PostgreSQL ユーザーの作成
PostgreSQL ユーザーは以下のタイプのものです。
-
postgres
Linux システムユーザー: PostgreSQL サーバーおよびクライアントアプリケーション (pg_dump
など) を実行するためにのみ使用します。データベース作成およびユーザー管理などの、PostgreSQL 管理上の対話的な作業にはpostgres
システムユーザーを使用しないでください。 -
データベースのスーパーユーザー: デフォルトの
postgres
PostgreSQL スーパーユーザーは、postgres
システムユーザーとは関係ありません。/var/lib/pgsql/data/pg_hba.conf
ファイルでpostgres
スーパーユーザーのアクセスを制限できます。それ以外の場合、他のパーミッションの制限はありません。他のデータベースのスーパーユーザーを作成することもできます。 特定のデータベースアクセスパーミッションを持つロール:
- データベースユーザー: デフォルトでログインするパーミッションがあります。
- ユーザーのグループ: グループ全体のパーミッションを管理できるようにします。
ロールはデータベースオブジェクト (テーブルや関数など) を所有でき、SQL コマンドを使用して他のロールにオブジェクト特権を割り当てることができます。
標準のデータベース管理権限には SELECT
、INSERT
、UPDATE
、DELETE
、TRUNCATE
、REFERENCES
、TRIGGER
、CREATE
、CONNECT
、TEMPORARY
、EXECUTE
、および USAGE
が含まれます。
ロール属性は、LOGIN
、SUPERUSER
、CREATEDB
、および CREATEROLE
などの特別な権限です。
ほとんどのタスクをスーパーユーザー以外のロールとして実行します。一般的な方法として、CREATEDB
および CREATEROLE
の権限を持つロールを作成し、このロールをデータベースおよびロールのすべてのルーチン管理に使用します。
前提条件
- PostgreSQL サーバーがインストールされている。
- データベースクラスターが初期化されている。
-
/var/lib/pgsql/data/postgresql.conf
ファイルのpassword_encryption
パラメーターがscram-sha-256
に設定されている。 -
/var/lib/pgsql/data/pg_hba.conf
ファイル内のエントリーが、認証方法としてscram-sha-256
ハッシュアルゴリズムを使用している。
手順
postgres
システムユーザーとしてログインするか、このユーザーに切り替えます。su - postgres
# su - postgres
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PostgreSQL インタラクティブターミナルを起動します。
psql
$ psql psql (16.4) Type "help" for help. postgres=#
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 現在のデータベース接続に関する情報を取得します。
postgres=# \conninfo You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
postgres=# \conninfo You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mydbuser
という名前のユーザーを作成し、パスワードを設定して、そのユーザーにCREATEROLE
およびCREATEDB
パーミッションを割り当てます。postgres=# CREATE USER mydbuser WITH PASSWORD '<password>' CREATEROLE CREATEDB; CREATE ROLE
postgres=# CREATE USER mydbuser WITH PASSWORD '<password>' CREATEROLE CREATEDB; CREATE ROLE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これで、
mydbuser
ユーザーは、日常的なデータベース管理操作 (データベースの作成とユーザーインデックスの管理) を実行できるようになりました。\q
メタコマンドを使用して、インタラクティブターミナルからログアウトします。postgres=# \q
postgres=# \q
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
mydbuser
として PostgreSQL ターミナルにログインし、ホスト名を指定して、初期化中に作成されたデフォルトのpostgres
データベースに接続します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow データベースを作成します。
postgres=> CREATE DATABASE <db_name>;
postgres=> CREATE DATABASE <db_name>;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow セッションからログアウトします。
postgres=# \q
postgres=# \q
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mydbuser
として新しいデータベースに接続します。psql -U mydbuser -h 127.0.0.1 -d <db_name>
# psql -U mydbuser -h 127.0.0.1 -d <db_name> Password for user mydbuser: psql (16.4) Type "help" for help. mydatabase=>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow