我使用超级用户帐户登录,这是我正在做的过程:
1-> CREATE ROLE test WITH IN ROLE testroles PASSWORD 'testpasswd'
2-> CREATE SCHEMA AUTHORIZATION test
Run Code Online (Sandbox Code Playgroud)
该角色已正确创建,但我在尝试创建架构时遇到此错误:
ERROR: must be member of role "test"
Run Code Online (Sandbox Code Playgroud)
提前致谢!
Dav*_*nes 96
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
Run Code Online (Sandbox Code Playgroud)
小智 26
我遇到了同样的问题,它抱怨您登录的当前(主)用户不是您尝试为其创建架构的用户组的成员.您应该授予对主用户的角色访问权限,这样您就可以创建SCHEMA而不会出现错误:
GRANT <role> TO <master_user>;
Run Code Online (Sandbox Code Playgroud)
bio*_*aph 21
你在使用RDS吗?因为当我以他们为您创建的"超级用户"登录时,我遇到了同样的问题.我能够解决这个问题的方法是创建一个新的组角色,其中包括我的超级用户和拥有该模式的用户.因此,对您而言,这意味着将您的超级用户和测试用户添加到新角色组:
CREATE ROLE users NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
GRANT megausers TO testroles;
GRANT test TO testroles;
Run Code Online (Sandbox Code Playgroud)
现在你应该能够创建你的schmea了
Raf*_*ira 16
这也是RDS的问题.
以超级用户身份登录
psql --host=xxxxxxx.rds.amazonaws.com --port=5432 --username=RDS_SUPERUSER_NAME --password --dbname=postgres
Run Code Online (Sandbox Code Playgroud)
创建用户
CREATE USER newuser WITH CREATEDB PASSWORD 'password';
Run Code Online (Sandbox Code Playgroud)
登出
\q
Run Code Online (Sandbox Code Playgroud)
登录为 newuser
psql --host=xxxxxxx.rds.amazonaws.com --port=5432 --username=newuser --password --dbname=postgres
Run Code Online (Sandbox Code Playgroud)
创建数据库/架构
CREATE SCHEMA/DATABASE ....
Run Code Online (Sandbox Code Playgroud)
我们不是必须将管理员用户成员资格授予服务角色吗?
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
Run Code Online (Sandbox Code Playgroud)
我也在RDS上遇到过这个问题.我以root
用户身份登录,创建了一个名为的角色myappuser
,然后尝试创建一个名为superduper
其所有者的架构myappuser
.
我找到了一个有效的解决方案.创建myappuser
角色,并确保此角色至少具有创建数据库的权限(调用该权限CREATEDB
).创建myappuser
角色后,我登录数据库myappuser
并创建superduper
用户所在的模式myappuser
.这没有任何问题.
归档时间: |
|
查看次数: |
49708 次 |
最近记录: |