解决PostgreSQL在终端没有权限创建数据库的方法

问题背景

笔者安装并配置完PostgreSQL后,试图在本地终端执行一系列SQL指令,包括创建数据库、查询数据等。然而,在第一步——创建数据库时就遇到了报错,让笔者十分摸不着头脑,网上对这一问题解决方法的介绍文章也较少,因此笔者在解决问题后在此记录,希望能与大家分享有用经验~

版本

PostgreSQL 14.14(Windows x86-64)

环境

  • SQL SHELL
  • 命令提示符cmd

报错详情

笔者首先启动了PG服务,并在PostgreSQL自带的命令行操作终端SQL SHELL里,通过连按四下回车的方式实现了默认登陆。随后便试图创建名为lab的数据库,命令和对应报错如下所示:

postgres=> CREATE DATABASE lab;

错误: 创建数据库权限不够

解决过程

首先参考了这篇文章,学习到可以用\du命令在这里的终端查看所有用户

postgresql用户无建库权限的解决方式_高斯数据库没有建表权限-CSDN博客

如上图所示,笔者这里有两个用户,被马赛克掉的那个是电脑默认用户;还有一个是为postgreSQL创建的postgres用户、也是此处登录的用户(具体创建方式参考了文章:百度安全验证

可见此处登录的postgres用户没有任何权限,经查阅资料,倘若该用户想要获取权限,需要让电脑默认用户授予该用户权限

笔者便想到,那就让当前处于postgres用户的终端,切换到电脑默认用户并授权呗。

直接切换用户需要用以下命令

SET ROLE {此处替换为电脑默认用户名};

然鹅,又遇到了报错——

错误: 设置角色"xxx"的权限不足

经查询,这是因为这个SET ROLE语句需要电脑默认用户这一超级用户才能执行,额。。。鄙人就是希望从普通用户转换到超级用户,但需要超级用户的权限,这不就死循环了莫/(ㄒoㄒ)/~~

成功解法(省流可直接跳转到此处hh)

还好本人灵机一动,想到另开一个终端直接用电脑默认用户登录试试看呢。于是新建一个cmd(不用SQL SHELL),在如下路径(注意一定要在这个地方输!!其他路径下识别不出psql命令)输入这段指令,以电脑默认用户登录

D:\PostgreSQL\14\bin>psql -U {此处替换为电脑默认用户名} -d postgres

然后让此用户把创建数据库的权限CREATEDB授权给postgres

postgres=# ALTER ROLE postgres WITH CREATEDB;

再查看一下当前所有用户,诶嘿,用户postgres有建库权限啦~~

最后,用postgres重新登录SQL SHELL,再次尝试用CREATE DATABASE语句创库,搞定!!大功告成~~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值