首先,我跑了:
sudo su postgres createuser -U postgres foouser -P
哪些工作得很好,我跑了:
createdb -U foouser -E utf8 -O foouser foodatabase -T template0
并得到“权限被拒绝:无法创build数据库”
首先,我甚至应该像postgres
一样做第一个操作(假设我的postgres数据目录由postgres
拥有),或者是来自任何用户的-U postgres
(假设trust
在pg_hba.conf
)是否足够?
其次,为什么我会遇到这个错误? 这是因为用户foouser
是一个非超级用户? 我应该使用postgres
用户创buildfoodatabase
,并简单地-O foouser
?
您正在收到此错误,因为foouser
不是超级用户,并且没有CREATE DATABASE
权限。
您可以创build数据库作为您的postgres
超级用户, foouser
作为所有者,这可能是最理智的select。
或者你可以使用DB超级用户(绝对不推荐),或者授予用户CREATE DATABASE
权限(也不是真的推荐 – 你的个人数据库用户应该是普通的普通用户,数据库所有者是他们应该拥有的最高级别的权限。 )
一般来说,我build议不要使用Postgres命令行工具。 他们没有什么问题,但是我认为使用SQL命令行与数据库进行交互是可取的。
关于CREATE DATABASE
SQL命令的文档,恕我直言,比命令行文档也好。
相当于你正在做的命令的SQL就像是:
CREATE DATABASE foodatabase WITH OWNER foouser ENCODING 'utf8' TEMPLATE template0;