ApsaraDB RDS for PostgreSQL はスーパーユーザーアカウントを提供していません。データベースごとに個別のアカウントを作成することをお勧めします。その後、各アカウントのオブジェクトを、そのアカウントのスキーマを使用して管理できます。
説明 この例では、ApsaraDB RDS インスタンスの作成時に作成される特権アカウント myuser を使用して、newuser という名前のアカウントを作成します。
解決策 1
- 特権アカウント myuser を使用して、データベースにログインする権限を持つ newuser という名前のアカウントを作成します。
CREATE USER newuser LOGIN PASSWORD 'password';説明:
- USER: アカウントのユーザー名。
- password: アカウントのパスワード。
- newuser アカウントのスキーマを作成します。
CREATE SCHEMA newuser; GRANT newuser to myuser; ALTER SCHEMA newuser OWNER TO newuser; REVOKE newuser FROM myuser;説明ALTER SCHEMA newuser OWNER TO newuser文を実行する前に myuser ロールが newuser アカウントにアタッチされていない場合、次のエラーが報告されます。ERROR: must be member of role "newuser"OWNER 権限を newuser アカウントに付与した後、RDS インスタンスのセキュリティを確保するために、myuser ロールを newuser アカウントからデタッチすることをお勧めします。
- 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.
解決策 2
- 特権アカウント myuser を使用して、データベースにログインする権限を持つ newuser という名前のアカウントを作成します。
CREATE USER newuser CREATEDB LOGIN PASSWORD 'password';説明:
- USER: アカウントのユーザー名。
- password: アカウントのパスワード。
- CREATEDB: newuser アカウントにデータベースを作成する権限を付与します。
- newuser アカウントを使用してデータベースにログインします。
psql -U <RDS インスタンスのエンドポイント> -p 3433 -U newuser <データベース名> CREATE DATABASE - newuser アカウントのスキーマを作成します。
CREATE SCHEMA newuser; GRANT myuser to newuser; ALTER SCHEMA myuser OWNER TO newuser; REVOKE newuser FROM myuser;説明ALTER SCHEMA myuser OWNER TO newuser文を実行する前に myuser ロールが newuser アカウントにアタッチされていない場合、次のエラーが報告されます。ERROR: must be member of role "newuser"OWNER 権限を newuser アカウントに付与した後、RDS インスタンスのセキュリティを確保するために、myuser ロールを newuser アカウントからデタッチすることをお勧めします。
- 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.