1. ロール作成
  2. ロール削除
    • ロールの属性変更

    PostgreSQL 8.1以降は、ユーザーとグループでなく、ロールでアクセス管理を行うようになっています。 新しくユーザーやグループを作成したい場合は、ロールを作成します。

    ロール作成

    pgsqlでのロール作成は以下のようになります。 名前は必須ですが、属性は無しでも作成できます。

    CREATE ROLE [名前] [属性]
    "testdb"というロールを作成する場合、スーパーユーザーの"postgres"でpgsqlに接続後、以下を実行します。
    CREATE ROLE testdb

    pgsqlを使わずにコマンドラインから作成したい場合、まずsuコマンドでpostgresユーザーになります。 その後、以下のようにcreateuserコマンドを実行してロールを作成します。

    $ createuser testdb
    createuserコマンドの実行は、psqlでSQL"CREATE ROLE"コマンドを実行するのと同じになります。

    • ログイン可能なロール作成

    • ユーザーのようにログイン可能なロールを作成する場合、ロールにログイン属性を付ける必要があります。

      CREATE ROLE [名前] LOGIN
      "testdb"というログイン可能なロールを作成する場合、スーパーユーザーの"postgres"でpgsqlに接続後、以下を実行します。
      postgres=# CREATE ROLE testdb LOGIN;

      ただし、このままではログインできません。 CentOSでPostgreSQLをyumでインストールしている場合、デフォルトではパスワードを設定しないとログインできないようです。 そのため、以下を参考にパスワードを設定します。

    ロール削除

    pgsqlでのロール削除は以下のようになります。

    DROP ROLE [名前]
    削除するロールがtestdbの場合、以下のように実行します。
    postgres=# DROP ROLE testdb;

    pgsqlを使わずにコマンドラインから削除したい場合、まずsuコマンドでpostgresユーザーになります。 その後、以下のようにdropserコマンドを実行してロールを削除します。

    $ dropuser testdb
    dropuserコマンドの実行は、psqlでSQL"DROP ROLE"コマンドを実行するのと同じになります。

      ロールの属性変更

      ロールの属性変更は以下のようになります。

      ALTER ROLE name [データベース名] [WITH] [属性]
      スーパーユーザーの権限を与える場合は、以下のようにSUPERUSERを指定します。
      postgres=# ALTER ROLE testdb SUPERUSER;
      上記でWITHを指定していませんが、以下のように指定しても同じ結果になります。
      postgres=# ALTER ROLE testdb WITH SUPERUSER;

      権限を剥奪する場合は以下のようになります。

      postgres=# ALTER ROLE testdb NOSUPERUSER;

      パスワードも "ALTER ROLE" で設定します。

      • 代表的なロール属性一覧

      • 属性の代表的なものは以下になります。

        付与 剥奪 備考
        SUPERUSER NOSUPERUER スーパーユーザーの権限
        CREATEDB NOCREATEDB データベース作成の権限
        CREATEROLE NOCREATEROLE ロール作成の権限。CREATEROLE権限を持つロールは、スーパーユーザ以外のロールに対してその名前を変更できます
        CREATEUSER NOCREATEUSER ユーザー作成の権限
        LOGIN NOLOGIN ログイン権限
        REPLICATION NOREPLICATION レプリケーションの作成権限

        参考 PostgreSQL ドキュメント・ALTER ROLE