スーパーユーザーアカウントでログインしています。これが私が行っているプロセスです。
1-> CREATE ROLE test WITH IN ROLE testroles PASSWORD 'testpasswd'
2-> CREATE SCHEMA AUTHORIZATION test
ロールは正しく作成されていますが、スキーマを作成しようとすると次のエラーが発生します。
ERROR: must be member of role "test"
前もって感謝します!
スーパーユーザーアカウントでログインしています。これが私が行っているプロセスです。
1-> CREATE ROLE test WITH IN ROLE testroles PASSWORD 'testpasswd'
2-> CREATE SCHEMA AUTHORIZATION test
ロールは正しく作成されていますが、スキーマを作成しようとすると次のエラーが発生します。
ERROR: must be member of role "test"
前もって感謝します!
回答:
CREATE DATABASEAmazon RDSで使用しているときに、この問題が発生しました。基本的にはを使用するのと同じだと思いますCREATE SCHEMA。
Amazon RDSを使用する場合、発行するユーザーCREATE DATABASEは、データベースの所有者となるロールのメンバーである必要があります。私の場合、使用しているスーパーユーザーアカウントはと呼ばれroot、oデータベースを所有するロールを作成します。d。
postgres=> CREATE ROLE o;
CREATE ROLE
postgres=> CREATE DATABASE d OWNER = o;
ERROR: must be member of role "o"
postgres=> GRANT o TO root;
GRANT ROLE
postgres=> CREATE DATABASE d OWNER = o;
CREATE DATABASE
GRANT o TO postgres;。データベースを作成する前に実行した以外は、この回答が解決策でした。
RDSを使用していますか?彼らがあなたのために作成する「スーパーユーザー」としてログインしたときに同じ問題が発生するからです。これを修正する方法は、スーパーユーザーとスキーマを所有するユーザーを含む新しいグループロールを作成することでした。したがって、これは、スーパーユーザーとテストユーザーを新しいロールグループに追加することを意味します。
CREATE ROLE users NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
GRANT megausers TO testroles;
GRANT test TO testroles;
これで、schmeaを作成できるようになります。
RDSでもこの問題が発生しました。
スーパーユーザーとしてログイン
psql --host=xxxxxxx.rds.amazonaws.com --port=5432 --username=RDS_SUPERUSER_NAME --password --dbname=postgres
ユーザーを作成する
CREATE USER newuser WITH CREATEDB PASSWORD 'password';
ログアウト
\q
としてログイン newuser
psql --host=xxxxxxx.rds.amazonaws.com --port=5432 --username=newuser --password --dbname=postgres
DB /スキーマを作成する
CREATE SCHEMA/DATABASE ....
管理者ユーザーにサービスロールのメンバーシップを付与するだけでよいのではないでしょうか。
create role service_role with password 'some_password';
create database service_db with owner service_role;
ERROR: must be member of role "service_role"
grant admin_user service_role;
GRANT ROLE
create database service_db with owner service_role;
CREATE DATABASE
GRANT service_role TO admin_user;
RDSでもこの問題が発生しました。rootユーザーとしてログインし、という名前のロールをmyappuser作成してからsuperduper、所有者がであるというスキーマを作成してみましたmyappuser。
私はうまくいく解決策を見つけました。myappuserロールを作成し、このロールに少なくともデータベースを作成する権限があることを確認します(権限はと呼ばれますCREATEDB)。myappuserロールを作成した後、としてデータベースにログインし、ユーザーがでmyappuserあるsuperduperスキーマを作成しましたmyappuser。これは問題なく機能しました。