PostgreSQL中创建带登录权限并加入已有角色的新角色报错,求助正确语法
PostgreSQL中创建带登录权限并加入已有角色的新角色报错,求助正确语法
嗨,我来帮你梳理下这个问题~
你遇到的报错是因为PostgreSQL的CREATE ROLE语法里,WITH关键字后面只能跟角色属性选项(比如LOGIN、PASSWORD、SUPERUSER这类),不能直接把另一个角色名放在WITH后面,所以数据库会把"role-one"当成一个不认识的选项,抛出错误。
要实现「创建带登录权限的新角色,并让它成为role-one的成员」,有两种常用的正确方式:
方式一:创建角色时直接指定所属角色
用IN ROLE子句来关联已有角色,一步到位:
CREATE ROLE "other_role" LOGIN IN ROLE "role-one";
方式二:先创建角色,再通过GRANT添加成员关系
如果需要分开操作,先创建带登录权限的角色,再用GRANT命令把新角色加入目标角色:
-- 第一步:创建带登录权限的新角色 CREATE ROLE "other_role" LOGIN; -- 第二步:将other_role设置为role-one的成员 GRANT "role-one" TO "other_role";
另外如果需要给新角色设置密码等其他属性,直接在CREATE ROLE里补充即可,比如:
CREATE ROLE "other_role" LOGIN PASSWORD 'your_secure_password' IN ROLE "role-one";
备注:内容来源于stack exchange,提问作者red888




