3.3. PostgreSQL ユーザーの作成
PostgreSQL ユーザーは以下のタイプのものです。
-
postgresLinux システムユーザー: PostgreSQL サーバーおよびクライアントアプリケーション (pg_dumpなど) を実行するためにのみ使用します。データベース作成およびユーザー管理などの、PostgreSQL 管理上の対話的な作業にはpostgresシステムユーザーを使用しないでください。 -
データベースのスーパーユーザー: デフォルトの
postgresPostgreSQL スーパーユーザーは、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 - postgresCopy 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 ROLECopy to Clipboard Copied! Toggle word wrap Toggle overflow これで、
mydbuserユーザーは、日常的なデータベース管理操作 (データベースの作成とユーザーインデックスの管理) を実行できるようになりました。\qメタコマンドを使用して、インタラクティブターミナルからログアウトします。postgres=# \q
postgres=# \qCopy 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=# \qCopy 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