通常 RDS では PostgreSQL スーパーユーザーを利用できないため、データベースを使用する際には別のユーザーを作成し、そのユーザーのプライベートスペースをスキーマで管理することを推奨します。

この例では、myuser はインスタンスと一緒に作成された管理アカウントで、newuser は作成されるアカウントです。

ソリューション 1

  1. ログイン権限を持つユーザーを作成します 。
    CREATE USER newuser LOGIN PASSWORD’password’;

    パラメーターは 以下のとおりです。

    • USER: newuser など、作成されるユーザー名。
    • password: password など、ユーザーのパスワード
  2. 新しいユーザーのスキーマを作成します。
    CREATE SCHEMA newuser;
    GRANT newuser to myuser;
    ALTER SCHEMA newuser OWNER TO newuser;
    REVOKE newuser FROM myuser;
    • ALTER SCHEMA newuser OWNER TO newuser の実行前に、newuser が myauser ロールに追加されていない場合は、次のような権限の問題が発生します。
         ERROR: must be member of role "newuser"
    • セキュリティーを考慮して、OWNER の権限が付与されたら、myuser ロールから newuser を削除してください。
  3. newuser を使用してデータベースにログインします。
    psql -U newuser -h intranet4example.pg.rds.aliyuncs.com -p 3433 pg001Password for user newuser:psql.bin (9.4.4, server 9.4.1)Type “help” for help.

ソリューション 2

  1. ログイン権限を持つユーザーを作成するために、初期アカウント myuser を使用します。
    CREATE USER newuser CREATEDB LOGIN PASSWORD’password’;

    パラメーターは 以下のとおりです。

    • USER: newuser など、作成するユーザー名。
    • password: password など、ユーザーのパスワード。
    • CREATEDB: ユーザーがデータベースを作成する権限。
  2. newuser を使用してデータベースにログインします。

    psql -U <Database instancec name> -p 3433 -U newuser <Database name>

    CREATE DATABASE

  3. Create a schema for the new user.
    CREATE SCHEMA newuser;
    GRANT myuser to newuser;
    ALTER SCHEMA myuser OWNER TO newuser;
    REVOKE newuser FROM myuser;
    • ALTER SCHEMA newuser OWNER TO newuser の実行前に、newuser が myauser ロールに追加されない場合は、次のような権限の問題が発生します。
        ERROR: must be member of role "newuser"
    • セキュリティーを考慮して、OWNER の権限が付与されたら、myuser ロールから newuser を削除してください。
  4. newuser を使用してデータベースにログインします。
    psql -U newuser -h intranet4example.pg.rds.aliyuncs.com -p 3433 pg001
    Password for user newuser:
    psql.bin (9.4.4, server 9.4.1)
    Type "help" for help.