Programing

PostgreSQL에서 스키마를 생성 할 때 "오류 : 역할의 구성원이어야 함"

lottogame 2020. 11. 23. 07:40
반응형

PostgreSQL에서 스키마를 생성 할 때 "오류 : 역할의 구성원이어야 함"


저는 수퍼 유저 계정으로 로그인했으며 이것이 제가하는 프로세스입니다.

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

나는이 같은 문제를 만났는데, 로그인 한 현재 (마스터) 사용자가 스키마를 생성하려는 사용자 그룹의 구성원이 아니라고 불평하고 있습니다. 마스터 사용자에게 역할 액세스 권한을 부여해야합니다. 그러면 오류없이 SCHEMA를 만들 수 있습니다.

GRANT <role> TO <master_user>;

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

I have encountered this issue on RDS as well. I logged in as the root user, created a role named myappuser and then tried creating a schema called superduper whose owner is myappuser.

I found a solution which works. Create the myappuser role, and make sure that this role at least has the permission to create databases (the privilege is called CREATEDB). After creating the myappuser role, I logged into the database as myappuser and created the superduper schema whose user is myappuser. This worked without any problems.


I was facing the same issue. To resolve this, I logged in with the newly created role and created the database. Somehow, grant does not work in RDS Postgres.


I just ran into this using Amazon RDS.

A lot of the answers are already correct, but you can also just alter the role.

Here was my implementation

psql -h ${PGHOST} -p ${PGPORT:-5432} -U ${PGUSER:-postgres} -c "ALTER USER renderer WITH CREATEDB PASSWORD '$RENDERPASSWORD'"

So while changing the password, I am also adding the CREATEDB role permission to the role.

참고URL : https://stackoverflow.com/questions/26684643/error-must-be-member-of-role-when-creating-schema-in-postgresql

반응형