PG10创建数据库指定属主报错
【摘要】 PG10创建数据库指定属主报错
问题描述
按照PG14的创建业务用户和业务数据库时提示如下报错:
--登录数据库 注意显示的是PG10.22版本
[root@ecs-c9d0-159 ~]# su - postgres
Last login: Sun Jun 30 16:05:36 CST 2024 on pts/2
-bash-4.2$ psql
psql (10.22)
Type "help" for help.
--创建业务用户
create user drugtopcsp with encrypted password '123456';
--创建业务数据库
postgres=> create database drugtopcsp owner drugtopcsp;
ERROR: must be member of role "drugtopcsp"
分析过程
创建用户的时候会自动生成一个同名的角色
--查看用户
meatopcsp=# \du+ drugtopcsp
List of roles
Role name | Attributes | Member of | Description
------------+------------+-----------+-------------
drugtopcsp | Create DB | {} |
解决办法
--将角色授权给postgres用户
grant drugtopcsp to postgres;
--查看
postgres=> \du+ postgres
List of roles
Role name | Attributes | Member of | Description
-----------+-------------------------------------------------+--------------------------------------------+-------------
postgres | Create role, Create DB, Replication, Bypass RLS | {drugtopcsp,cosmtopcsp,meatopcsp,yjsjzhzl} |
--创建数据库时指定属主 创建成功
postgres=> create database drugtopcsp owner drugtopcsp;
CREATE DATABASE
补充
PG10创建业务用户和数据库语句
create user drugtopcsp with encrypted password '123456';
grant cosmtopcsp to postgres;
create database drugtopcsp owner drugtopcsp;
grant all privileges on database drugtopcsp to drugtopcsp;
grant all privileges on all tables in schema public to drugtopcsp;
PG14创建业务用户和数据库语句
create user drugtopcsp with encrypted password '123456';
create database drugtopcsp owner drugtopcsp;
grant all privileges on database drugtopcsp to drugtopcsp;
grant all privileges on all tables in schema public to drugtopcsp;
二者区别在于:创建业务用户和数据库语句时,版本PG10比版本PG14多一条将角色授予创建数据库用户的sql。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)