저는 수퍼 유저 계정으로 로그인했으며 이것이 제가 수행하는 프로세스입니다.
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 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
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