Estou conectado com uma conta de superusuário e este é o processo que estou fazendo:
1-> CREATE ROLE test WITH IN ROLE testroles PASSWORD 'testpasswd'
2-> CREATE SCHEMA AUTHORIZATION test
A função foi criada corretamente, mas estou recebendo este erro ao tentar criar o esquema:
ERROR: must be member of role "test"
Desde já, obrigado!
postgresql
roles
Ultranuke
fonte
fonte
Respostas:
Eu tive esse problema ao usar
CREATE DATABASE
no Amazon RDS. Acho que é essencialmente o mesmo que usarCREATE SCHEMA
.Ao usar o Amazon RDS, o usuário que emite o
CREATE DATABASE
deve ser um membro da função que será o proprietário do banco de dados. No meu caso, a conta de superusuário que estou usando é chamadaroot
e vou criar uma funçãoo
que terá um banco de dadosd
: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
fonte
GRANT o TO postgres;
antes de criar o banco de dados.Eu me deparei com o mesmo problema, ele está reclamando que o usuário atual (mestre) com o qual você está conectado não é membro do grupo de usuários para o qual você está tentando criar o esquema. Você deve conceder o acesso de função ao seu usuário mestre e isso permitirá que você crie o SCHEMA sem erros:
GRANT <role> TO <master_user>;
fonte
Você está usando RDS? Porque tenho o mesmo problema quando faço login como o "superusuário" que eles criaram para você. A maneira que consegui corrigir isso foi criar uma nova função de grupo que incluía meu superusuário e o usuário dono do esquema. Então, para você, isso significaria adicionar seu superusuário e usuário de teste a um novo grupo de funções:
CREATE ROLE users NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION; GRANT megausers TO testroles; GRANT test TO testroles;
Agora você deve ser capaz de criar seu schmea
fonte
Tive esse problema com RDS também.
Para resolver:
Faça login como superusuário
psql --host=xxxxxxx.rds.amazonaws.com --port=5432 --username=RDS_SUPERUSER_NAME --password --dbname=postgres
Crie o usuário
CREATE USER newuser WITH CREATEDB PASSWORD 'password';
Sair
Entrar como
newuser
psql --host=xxxxxxx.rds.amazonaws.com --port=5432 --username=newuser --password --dbname=postgres
Crie seu banco de dados / esquema
CREATE SCHEMA/DATABASE ....
fonte
Não precisamos apenas conceder ao usuário administrador a associação à função de serviço?
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
fonte
GRANT service_role TO admin_user;
Também encontrei esse problema no RDS. Efetuei login como o
root
usuário, criei uma função chamadamyappuser
e tentei criar um esquema chamadosuperduper
cujo proprietário émyappuser
.Eu encontrei uma solução que funciona. Crie a
myappuser
função e certifique-se de que essa função tenha pelo menos permissão para criar bancos de dados (o privilégio é chamadoCREATEDB
). Depois de criar amyappuser
função, eu loguei no banco de dados comomyappuser
e criei osuperduper
esquema de quem é o usuáriomyappuser
. Isso funcionou sem problemas.fonte
Eu estava enfrentando o mesmo problema. Para resolver isso, efetuei login com a função recém-criada e criei o banco de dados. De alguma forma, conceder não funciona no RDS Postgres.
fonte
Acabei de encontrar isso usando o Amazon RDS.
Muitas das respostas já estão corretas, mas você também pode apenas alterar a função.
Aqui estava minha implementação
psql -h ${PGHOST} -p ${PGPORT:-5432} -U ${PGUSER:-postgres} -c "ALTER USER renderer WITH CREATEDB PASSWORD '$RENDERPASSWORD'"
Portanto, ao alterar a senha, também estou adicionando a permissão de função CREATEDB à função.
fonte
Eu consertei fazendo login com o
postgres
usuário (e depois apliquei minhas alterações, que no meu caso era mudar de propriedade):sudo -u postgres psql ALTER DATABASE my_database OWNER TO new_user;
fonte