PostgreSQL에서 스키마를 생성 할 때 "오류 : 역할의 구성원이어야 함"
저는 수퍼 유저 계정으로 로그인했으며 이것이 제가하는 프로세스입니다.
1-> CREATE ROLE test WITH IN ROLE testroles PASSWORD 'testpasswd'
2-> CREATE SCHEMA AUTHORIZATION test
역할이 올바르게 생성되었지만 스키마를 생성하려고 할 때이 오류가 발생합니다.
ERROR: must be member of role "test"
미리 감사드립니다!
CREATE DATABASE
Amazon 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.
'Programing' 카테고리의 다른 글
AttributeError : '모듈'개체에 'urlretrieve'속성이 없습니다. (0) | 2020.11.23 |
---|---|
부적절한 구성 : 포함 된 urlconf (0) | 2020.11.23 |
터미널을 사용하여 Mac OS X에서 C 프로그램을 실행하는 방법은 무엇입니까? (0) | 2020.11.23 |
API Gateway CORS : 'Access-Control-Allow-Origin'헤더 없음 (0) | 2020.11.23 |
string.empty와 string [0]의 차이점 == '\ 0' (0) | 2020.11.23 |